- bind this
- 关于 event 参数
- 传递自定义参数
constructor() { this.clickHandler = this.clickHandler.bind(this)}render() { return <p onClick={this.clickHandler}>{this.state.name}</p>}clickHandler() { this.setState({ // this默认是undefined name: 'list' })}clickHandler2 = () => { this.setState({ // 静态方法,this指向当前实例 name: 'list' })}clickHandler3(event) { event.preventDefault(); // 阻止默认行为 event.stopPropagation(); // 阻止冒牌 /* 这里 event 不是原生的,这个的 __proto__.constructor 指向的是一个框架合成的 SyntheticEvent,这个模拟了 dom 事件的所有能力 而 vue 的 event 是原生的 MouseEvent 在 react 中 event.nativeEvent 则是原生的那个 event.nativeEvent.target 指向的是鼠标点击的那个元素 event.nativeEvent.currentTarget 绑定事件的元素则指向了 #document !!!React17开始,事件就不再绑定到 document 上了 */}clickHandler4(arg1, arg2, event) { // 最后追加的一个参数 是event}
- React16 事件绑定到 document
- React17 事件绑定到 root组件上
- 17这样做有利于多个React版本并存,例如微前端
