1. 程式人生 > >關於react的一些須知

關於react的一些須知

原本 部分 this 返回 create creat stat 意思 繼續

之前為了學習redux買了一本《深入淺出react和redux》,只看了redux部分。最近重新一遍,還是很有收獲,這裏結合閱讀文檔時的一些理解,記下一些初學者可能不太註意的東西。

原則:

1.react原本的目標是為設計視圖組件,UI=render(data);一個react組件有兩個數據源可以驅動渲染,一個是記錄內部狀態變化的state,一個是外部傳入的props。由於props中的變量可能在外部的某個地方被引用,因而props中的數據是絕對不能修改的。

生命周期:

2.react組件的生命周期有三個過程:Mount、Update、Unmount,每個過程都會觸發鉤子函數:

Mount----

constructor:創建一個組件類的實例,一般用來設置state和綁定成員函數的this;無狀態的組件不需要constructor

getInitialState:調用React.createClass時才調用,調用React.createClass已被官方棄用。

getDefaultProps:調用React.createClass時才調用,調用React.createClass已被官方棄用。

componentWillMount:渲染前觸發(一般不需要)

render:渲染組件

componentDidMount:渲染完成後觸發,比如在這裏執行ajax;只能在瀏覽器中調用

Update----

componentWillReceiveProps:組件傳入的props改變或父組件重新渲染時觸發

shouldComponentUpdate(nextProps,nextState):返回布爾值決定該次更新是否繼續

子該函數中,this.state是setState之前的值。通過this.state,next.state,this.props,next.props對比,決定是否渲染,可以提高組件性能

componentWillUpdate:

render:

componentDidUpdate:可在服務器端或客戶端調用。

Unupdate-----

componentWillUnmount:唯一一個卸載過程觸發的函數,作者提醒,在mount時通過非react方式創建的dom容易造成內存泄漏,需要在這裏手動清除。

數據流:

react中的數據流是自上而下的,父組件可以將props、state、自定義的一些js對象、方法、字符串傳給子組件,作為子組件的props,逐級下傳。

當幾個組件需要共享某個狀態變量的時候,react文檔提到一個概念“lifting state up”:意思是將這個共享的狀態變量放到最近的一個共同父組件中,由這個父組件以props的方式傳給子組件。

//待續

關於react的一些須知