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!

推薦閱讀: