當通過createClass創建了組件之后,該React組件就有了生命周期。通常一個React組件的生命周期可分為三個階段:
Mounting:掛載組件,也就是組件實例化
ReciveProps:存在期,在這個時期組件的props和state會變化,重新渲染組件
Unmounting:卸載組件,也就是組件被銷毀
React在生命周期中提供了10種API:
1.getDefaultProps():作用于組件類,只調用一次,返回對象用于設置默認的props,對于引用值,會在實例中共享。
2.getInitialState():作用于組件的實例,在實例創建時調用一次,用于初始化每個實例的state。
3.componentWillMount():在完成首次渲染之前調用,此時仍可以修改組件的tate。
4.render():必選的方法,創建虛擬DOM,該方法具有特殊的規則:
只能通過this.props和this.state訪問數據
可以返回null、false或任何React組件
只能出現一個頂級組件(不能返回數組)
不能改變組件的狀態
不能修改DOM的輸出
5.componentDidMount():真實的DOM被渲染出來后調用,在該方法中可通過 this.getDOMNode()訪問到真實的DOM元素。此時已可以使用其他類庫來操作這個 DOM。
注意:在服務端中,該方法不會被調用。
6.componentWillReceiveProps(nextProps,nextState):組件接收到新的props時調用,并將其作為參數nextProps使用,此時可以更改組件props及state。
7.shouldComponentUpdate(nextProps,nextState):組件是否應當渲染新的props或state,返回false表示跳過后續的生命周期方法,通常不需要使用以避免出現bug。在出現應用的瓶頸時,可通過該方法進行適當的優化。
注意:在首次渲染期間或者調用了forceUpdate方法后,該方法不會被調用。
8.componentWillUpdate(nextProps,nextState):接收到新的props或者state后,進行渲染之前調用,此時不允許更新props或state。
9.componentDidUpdate(prevProps,prevState):完成渲染新的props或者state后調用,此時可以訪問到新的DOM元素。
10.componentWillUnmount():組件被移除之前被調用,可以用于做一些清理工作,在componentDidMount方法中添加的所有任務都需要在該方法中撤銷,比如創建的定時器或添加的事件監聽器。
總結:下圖描述了生命周期的執行順序。
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。