react 是什么?
A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES
用于構建用戶界面的JAVASCRIPT庫
react 的特點
(1)聲明式設計
(2)高效:通過對DOM的模擬,最大限度的減少與DOM的交互。
(3)靈活:可以與已知的框架或庫很好的配合。
(4)JSX:是js語法的擴展,不一定使用,但建議用。
(5)組件:構建組件,使代碼更容易得到復用,能夠很好地應用在大項目的開發(fā)中。
(6)單向響應的數據流:React實現了單向響應的數據流,從而減少了重復代碼,這也是解釋了它為什么比傳統(tǒng)數據綁定更簡單。
react 組件生命周期
一個React組件的生命周期分為三個部分:實例化、存在期和銷毀時
實例化:(當組件在客戶端被實例化,第一次被創(chuàng)建時)
getDefaultProps
getInitialState
componentWillMount
-
render
render方法需要滿足下面幾點:
只能通過 this.props 和 this.state 訪問數據(不能修改)
可以返回 null,false 或者任何React組件
只能出現一個頂級組件,不能返回一組元素
不能改變組件的狀態(tài)
不能修改DOM的輸出 -
componentDidMount
需要從組件獲取真實 DOM 的節(jié)點,這時就要用到 ref 屬性
this.refs.[refName] 屬性獲取的是真實 DOM
存在期:(此時組件已經渲染好并且用戶可以與它進行交互)
-
componentWillReceiveProps
組件的 props 屬性可以通過父組件來更改,這時,componentWillReceiveProps 將來被調用??梢栽谶@個方法里更新 state,以觸發(fā) render 方法重新渲染組件。
shouldComponentUpdate
componentWillUpdate
render
componentDidUpdate
銷毀時:(每當React使用完一個組件,這個組件必須從 DOM 中卸載后被銷毀,此時 componentWillUnmout 會被執(zhí)行,完成所有的清理和銷毀工作,在 componentDidMount 中添加的任務都需要再該方法中撤銷,如創(chuàng)建的定時器或事件監(jiān)聽器。)
- componentWillUnmout