React中事件綁定this指向三種方法的實現
1.箭頭函數
1.利用箭頭函數自身不綁定this的特點;
2.render()方法中的this為組件實例,可以獲取到setState();
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> // 箭頭函數中的this指向外部環境,此處為:render()方法 <button onClick={()=>this.onIncrement()}>+1</button> {/* <button onClick={this.onIncrement()}>+1</button> */} </div> ) } }
2.Function.proptype.bind()
1.利用ES5中的bind方法,將事件處理程序中的this與組件實例綁定到一起
class App extends React.Component{ constructor() { super() // 數據 this.state ={ count: 0 } // 第一中方法.bind 改變this指向,返回一個函數,不執行該函數 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> {/* <button onClick={this.onIncrement()}>+1</button> */} </div> ) } }
3.class的實例方法
1.利用箭頭函數形式的class實例方法
2.該語法是實驗性語法,但是由於babel的存在就可以直接使用
class App extends React.Component{ constructor() { super() // 數據 this.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> {/* <button onClick={this.onIncrement()}>+1</button> */} </div> ) } }
到此這篇關於React中事件綁定this指向三種方法的實現的文章就介紹到這瞭,更多相關React 事件綁定this指向內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!