1. 程式人生 > >react最佳實踐-React繫結this

react最佳實踐-React繫結this

React繫結this的方式在這裡總結5種方式:

1.React.createClass自動繫結:React.createClass建立的元件,可以自動繫結this。This這個關鍵字會自動繫結在元件例項上面。

2.渲染時繫結:這種方法簡明扼要,但是有一個潛在的效能問題:當元件每次重新渲染時,都會有一個新的函式建立。 如下所示

onChange={this.handleChange.bind(this)}

3.箭頭函式繫結:這種方式和第二種方式類似,所以根據ES6箭頭函式,我們可以隱式繫結this,如下所示:

onChange={e => this.handleChange(e)}

當然,與方法二一樣,他同樣存在潛在的效能問題,下面介紹兩種this的繫結方式,可以有效地規避不必要的效能消耗。

4.Constructor內繫結:constructor方法是類的預設方法,通過new命令生成物件例項時,自動呼叫該方法。使用如下所示:

constructor(props){
    super(props);
    this.handleChange = this.handleChange.bind(this);
}

 通常這種方式被推薦為“最佳實踐”,但是與前兩種方式比較,constructor內繫結在可讀性和可維護性上也有些欠缺。同時,在constructor宣告的方法不會存在例項的原型上,而屬於例項本身的方法。每個例項都有同樣一個handleChange,本身也是一種重複和浪費。如果你對ES next包郵開放的思想。且能夠使用stage-2的特性,可以嘗試一下最後一種方式。

5.Class屬性中使用=和箭頭函式:這種方式依賴於ES next的新特性,請參考。

handleChange = () => {
    //箭頭函式自動繫結this,在渲染的時候自動回撥函式
}

總結一下這種方式的優點:

(1)使用箭頭函式,有效綁定了this;

(2)沒有第二種方式和第三種方法的潛在性問題;

(3)避免了方法四的元件例項重複問題;

(4)可以直接從ES5 createClass重構得來。 

說明:該文章是在學習過程中記錄和總結下來的知識點,如有雷同純屬巧合。