在React-Native開(kāi)發(fā)中,組件的生命周期和我們密不可切,了解生命周期利于我們觀察組件的變化過(guò)程。組件生命周期可以先簡(jiǎn)單分為三個(gè)階段:實(shí)例化、存在和銷(xiāo)毀。
實(shí)例化階段
getDefaultProps
用于設(shè)置初始化默認(rèn)props屬性。
getInitialState
用于設(shè)置初始化默認(rèn)state屬性,ES5一般使用的語(yǔ)法。在ES6中推薦使用state初始在constructor中實(shí)現(xiàn)。
componentWillMount
渲染之前調(diào)用,主要是在組件被首次渲染之前做些操作,比如要在首次渲染之前修改一些初始state,并且this.setState不會(huì)多次觸發(fā)渲染,整個(gè)生命周期執(zhí)行一次。
Render
組件的渲染函數(shù),返回JSX或其他組件,用于開(kāi)始渲染生成虛擬DOM。
componentDidMount
渲染之后調(diào)用一次,此時(shí)組件已經(jīng)首次加載出來(lái)了。一般這里適合進(jìn)行組件的初始化后的一些操作,比如發(fā)起網(wǎng)絡(luò)請(qǐng)求等等。
存在階段
componentWillReceiveProps
如果組件接收到新的props會(huì)調(diào)用,帶有參數(shù)nextProps,是即將被設(shè)置的屬性,這時(shí)的this.props看還可以表示舊的屬性,因此可以根據(jù)兩者的變化來(lái)選擇性地執(zhí)行相應(yīng)的函數(shù)。
shouldComponentUpdate
如果組件接收到新props和改變state后會(huì)調(diào)用,shouldComponentUpdate帶有兩個(gè)參數(shù):nextProps 和 nextState,都表示即將被設(shè)置的屬性和狀態(tài)。通過(guò)返回的bool類(lèi)型判定組件是否需要更新渲染,默認(rèn)返回true,常用于性能優(yōu)化減少不必要的頁(yè)面渲染。
componentWillUpdate
如果shouldComponentUpdate返回true后將調(diào)用此方法,即更新渲染之前調(diào)用,表示組件即將被更新渲染。值得一提的是,這個(gè)函數(shù)里面,你不能使用this.setState來(lái)修改狀態(tài)。
componentDidUpdate
更新渲染之后被調(diào)用,此函數(shù)中組件UI已經(jīng)更新渲染完成,帶有參數(shù)prevProps和prevState,分別代表了渲染結(jié)束組件的參數(shù)和狀態(tài)。
銷(xiāo)毀階段
componentWillUnmount
組件移除之前被調(diào)用,通常是做清理操作,比如取消定時(shí)器。
海說(shuō)軟件會(huì)持續(xù)推出前端教學(xué)課程、技術(shù)干貨。