Es6写法
使用class App extends React.Component{…}的方式创建组件,这也是目前官方推荐创建有状态组件的方式
import React from 'react'import { render } from 'react-dom'class SwitchButton extends React.Component {constructor(props) {super(props)this.state = {open: this.props.open}this.handleClick = this.handleClick.bind(this)}handleClick(event) {this.setState({ open: !this.state.open })}render() {let open = this.state.open,className = open ? 'switch-button open' : 'btn-switch'return (<label className={className} onClick={this.handleClick}><input type="checkbox" checked={open}/></label>)}}SwitchButton.defaultProps = {open: false}render(<SwitchButton />,document.getElementById('app'))
import
与这里使用了 ES6 的import语句替代require()方法导入模块,其中import {render}可以直接从模块中导入变量名,这种写法更加简洁直观。
初始化 state
React 使用 ES6 的“类”继承实现时,去掉了getInitialState这个 hook 函数,state的初始化放在构造函数方法constructor中声明。
this 绑定
React.Component创建组件时,事件函数并不会自动绑定this,需要我们手动绑定,不然this将不会指向当前组件的实例对象。以下有三种绑定this的方法:
