一 概述
- 箭头函数
- Function.prototype.bind()
- class 的实例方法
二 箭头函数
2.1 概念说明
- 利用箭头函数自身不绑定this的特点
- render() 方法中的 this 为组件实例,可以获取到 setState()
2.2 示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class App extends React.Component { state = { count: 0 } onIncrement() { console.log('事件处理程序中的this:', this) this.setState({ count: this.state.count + 1 }) } render() { return ( <div> <h1>计算器:{this.state.count}</h1> <button onClick={() => this.onIncrement()}>+1</button> </div> ) } }
|
三 Function.prototype.bind()
3.1 概念说明
利用ES5中的bind方法,将事件处理程序中的this与组件实例绑定到一起
3.2 示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| class App extends React.Component { constructor() { super() this.state = { count: 0 } this.onIncrement = this.onIncrement.bind(this) } onIncrement() { console.log('事件处理程序中的this:', this) this.setState({ count: this.state.count + 1 }) } render() { return ( <div> <h1>计算器:{this.state.count}</h1> <button onClick={this.onIncrement}>+1</button> </div> ) } }
|
四 class 的实例方法
4.1 class 的实例方法
- class 的实例方法
- 注意:该语法是实验性语法,但是,由于babel的存在可以直接使用
4.2 示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class App extends React.Component { state = { count: 0 } onIncrement = () => { console.log('事件处理程序中的this:', this) this.setState({ count: this.state.count + 1 }) } render() { return ( <div> <h1>计算器:{this.state.count}</h1> <button onClick={this.onIncrement}>+1</button> </div> ) } }
|