Es6写法

使用class App extends React.Component{…}的方式创建组件,这也是目前官方推荐创建有状态组件的方式

  1. import React from 'react'
  2. import { render } from 'react-dom'
  3. class SwitchButton extends React.Component {
  4. constructor(props) {
  5. super(props)
  6. this.state = {
  7. open: this.props.open
  8. }
  9. this.handleClick = this.handleClick.bind(this)
  10. }
  11. handleClick(event) {
  12. this.setState({ open: !this.state.open })
  13. }
  14. render() {
  15. let open = this.state.open,
  16. className = open ? 'switch-button open' : 'btn-switch'
  17. return (
  18. <label className={className} onClick={this.handleClick}>
  19. <input type="checkbox" checked={open}/>
  20. </label>
  21. )
  22. }
  23. }
  24. SwitchButton.defaultProps = {
  25. open: false
  26. }
  27. render(
  28. <SwitchButton />,
  29. document.getElementById('app')
  30. )

import

与这里使用了 ES6 的import语句替代require()方法导入模块,其中import {render}可以直接从模块中导入变量名,这种写法更加简洁直观。

初始化 state

React 使用 ES6 的“类”继承实现时,去掉了getInitialState这个 hook 函数,state的初始化放在构造函数方法constructor中声明。

this 绑定

React.Component创建组件时,事件函数并不会自动绑定this,需要我们手动绑定,不然this将不会指向当前组件的实例对象。以下有三种绑定this的方法: