溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

react的生命周期函數(shù)介紹

發(fā)布時(shí)間:2020-06-22 16:54:26 來源:億速云 閱讀:159 作者:Leah 欄目:web開發(fā)

這篇文章將為大家詳細(xì)講解有關(guān)react的生命周期函數(shù)介紹,文章內(nèi)容質(zhì)量較高,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

初始化
1.getDefaultProps()

注:getDefaultProps這種定義方式是用在你定義組件用的是React.createClass方式的
如果使用的是es6的語法,例如用的是class 組件名 extends React.Component的話,就不要用
getDefaultProps這種方式去定義props了,而是應(yīng)該用 static propTypes ={}來定義,這樣就不會(huì)有警了

設(shè)置默認(rèn)的props,也可以用dufaultProps設(shè)置組件的默認(rèn)屬性. ---》設(shè)置
2.getInitialState()

注:與getDefaultProps的區(qū)別在于前者設(shè)置默認(rèn)的 props,后者設(shè)置初始的state在使用es6的class語法時(shí)是沒有這個(gè)鉤子函數(shù)的,可以直接在constructor中定義 this.state。此時(shí)可以訪問this.props

3.componentWillMount

注:組件初始化時(shí)只調(diào)用,以后組件更新不調(diào)用,整個(gè)生命周期只調(diào)用一次,此時(shí)可以修改state。

4. render()

注:react最重要的步驟,創(chuàng)建虛擬dom,進(jìn)行diff算法,更新dom樹都在此進(jìn)行。此時(shí)就不能更改state了。

5.componentDidMount()

注:組件渲染之后調(diào)用,只調(diào)用一次。可以在此請(qǐng)求數(shù)據(jù)

·更新
1.componentWillReceiveProps(nextProps)

注:組件初始化時(shí)不調(diào)用,組件接受新的props時(shí)調(diào)用。

2.shouldComponentUpdate(nextProps, nextState)

注:react性能優(yōu)化非常重要的一環(huán)。組件接受新的state或者props時(shí)調(diào)用,我們可以設(shè)置在此對(duì)比前后兩個(gè)props和state是否相同,如果相同則返回false阻止更新,因?yàn)橄嗤膶傩誀顟B(tài)一定會(huì)生成相同的dom樹,這樣就不需要?jiǎng)?chuàng)造新的dom樹和舊的dom樹進(jìn)行diff算法對(duì)比,節(jié)省大量性能,尤其是在dom結(jié)構(gòu)復(fù)雜的時(shí)候

3.componentWillUpdata(nextProps, nextState)

注:組件初始化時(shí)不調(diào)用,只有在組件將要更新時(shí)才調(diào)用,此時(shí)可以修改state

4.render()

注:組件渲染

5.componentDidUpdate()

注:組件初始化時(shí)不調(diào)用,組件更新完成后調(diào)用,此時(shí)可以獲取dom節(jié)點(diǎn)。

·卸載

componentWillUnmount()
注:組件將要卸載時(shí)調(diào)用,一些事件監(jiān)聽和定時(shí)器需要在此時(shí)清除。

以上就是react的生命周期函數(shù)介紹,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊,感謝各位的閱讀。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI