999精品国内在线观看视频-日韩 中文字幕 在线视频-伊人久久中文字幕在线-少妇熟女激情一区二区三区-久久精品国产亚洲av水果派-91成人在线视频网-91久久久在线免费-国产综合一区二区三区-一区,二区av在线,亚洲天堂中文字幕91,欧美偷拍亚洲变态另类,国产精品久久久久久久hd

react生命周期有哪些_react生命周期 世界觀速訊

來源:互聯(lián)網(wǎng)

1、概述 就像 Android 開發(fā)中的 View 一樣,React Native(RN) 中的組件也有生命周期(Lifecycle)。


【資料圖】

2、所謂生命周期,就是一個對象從開始生成到最后消亡所經(jīng)歷的狀態(tài),理解生命周期,是合理開發(fā)的關鍵。

3、RN 組件的生命周期整理如下圖: 如圖,可以把組件生命周期大致分為三個階段: 第一階段:是組件第一次繪制階段,如圖中的上面虛線框內,在這里完成了組件的加載和初始化; 第二階段:是組件在運行和交互階段,如圖中左下角虛線框,這個階段組件可以處理用戶交互,或者接收事件更新界面; 第三階段:是組件卸載消亡的階段,如圖中右下角的虛線框中,這里做一些組件的清理工作。

4、 生命周期回調函數(shù) 下面來詳細介紹生命周期中的各回調函數(shù)。

5、 getDefaultProps 在組件創(chuàng)建之前,會先調用 getDefaultProps(),這是全局調用一次,嚴格地來說,這不是組件的生命周期的一部分。

6、在組件被創(chuàng)建并加載候,首先調用 getInitialState(),來初始化組件的狀態(tài)。

7、 componentWillMount 然后,準備加載組件,會調用 componentWillMount(),其原型如下: void componentWillMount() 這個函數(shù)調用時機是在組件創(chuàng)建,并初始化了狀態(tài)之后,在第一次繪制 render() 之前。

8、可以在這里做一些業(yè)務初始化操作,也可以設置組件狀態(tài)。

9、這個函數(shù)在整個生命周期中只被調用一次。

10、 componentDidMount 在組件第一次繪制之后,會調用 componentDidMount(),通知組件已經(jīng)加載完成。

11、函數(shù)原型如下: void componentDidMount() 這個函數(shù)調用的時候,其虛擬 DOM 已經(jīng)構建完成,你可以在這個函數(shù)開始獲取其中的元素或者子組件了。

12、需要注意的是,RN 框架是先調用子組件的 componentDidMount(),然后調用父組件的函數(shù)。

13、從這個函數(shù)開始,就可以和 JS 其他框架交互了,例如設置計時 setTimeout 或者 setInterval,或者發(fā)起網(wǎng)絡請求。

14、這個函數(shù)也是只被調用一次。

15、這個函數(shù)之后,就進入了穩(wěn)定運行狀態(tài),等待事件觸發(fā)。

16、 componentWillReceiveProps 如果組件收到新的屬性(props),就會調用 componentWillReceiveProps(),其原型如下: void componentWillReceiveProps( object nextProps ) 輸入?yún)?shù) nextProps 是即將被設置的屬性,舊的屬性還是可以通過 this.props 來獲取。

17、在這個回調函數(shù)里面,你可以根據(jù)屬性的變化,通過調用 this.setState() 來更新你的組件狀態(tài),這里調用更新狀態(tài)是安全的,并不會觸發(fā)額外的 render() 調用。

18、如下: componentWillReceiveProps: function(nextProps) { this.setState({ likesIncreasing: nextProps.likeCount >this.props.likeCount }); } shouldComponentUpdate 當組件接收到新的屬性和狀態(tài)改變的話,都會觸發(fā)調用 shouldComponentUpdate(...),函數(shù)原型如下: boolean shouldComponentUpdate( object nextProps, object nextState ) 輸入?yún)?shù) nextProps 和上面的 componentWillReceiveProps 函數(shù)一樣,nextState 表示組件即將更新的狀態(tài)值。

19、這個函數(shù)的返回值決定是否需要更新組件,如果 true 表示需要更新,繼續(xù)走后面的更新流程。

20、否者,則不更新,直接進入等待狀態(tài)。

21、 默認情況下,這個函數(shù)永遠返回 true 用來保證數(shù)據(jù)變化的時候 UI 能夠同步更新。

22、在大型項目中,你可以自己重載這個函數(shù),通過檢查變化前后屬性和狀態(tài),來決定 UI 是否需要更新,能有效提高應用性能。

23、 componentWillUpdate 如果組件狀態(tài)或者屬性改變,并且上面的 shouldComponentUpdate(...) 返回為 true,就會開始準更新組件,并調用 componentWillUpdate(),其函數(shù)原型如下: void componentWillUpdate( object nextProps, object nextState ) 輸入?yún)?shù)與 shouldComponentUpdate 一樣,在這個回調中,可以做一些在更新界面之前要做的事情。

24、需要特別注意的是,在這個函數(shù)里面,你就不能使用 this.setState 來修改狀態(tài)。

25、這個函數(shù)調用之后,就會把 nextProps 和 nextState 分別設置到 this.props和 this.state 中。

26、緊接著這個函數(shù),就會調用 render() 來更新界面了。

27、 componentDidUpdate 調用了 render() 更新完成界面之后,會調用 componentDidUpdate() 來得到通知,其函數(shù)原型如下: void componentDidUpdate( object prevProps, object prevState ) 因為到這里已經(jīng)完成了屬性和狀態(tài)的更新了,此函數(shù)的輸入?yún)?shù)變成了 prevProps 和 prevState。

28、 componentWillUnmount 當組件要被從界面上移除的時候,就會調用 componentWillUnmount(),其函數(shù)原型如下: void componentWillUnmount() 在這個函數(shù)中,可以做一些組件相關的清理工作,例如取消計時器、網(wǎng)絡請求等。

29、 總結 到這里,RN 的組件的完整的生命都介紹完了,在回頭來看一下前面的圖,就比較清晰了,把生命周期的回調函數(shù)總結成如下表格: 生命周期 調用次數(shù) 能否使用 setSate() getDefaultProps 1(全局調用一次) 否 getInitialState 1 否 componentWillMount 1 是 render >=1 否 componentDidMount 1 是 componentWillReceiveProps >=0 是 shouldComponentUpdate >=0 否 componentWillUpdate >=0 否 componentDidUpdate >=0 否 componentWillUnmount 1 否 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

本文到此分享完畢,希望對大家有所幫助。

標簽:

推薦

財富更多》

動態(tài)更多》

熱點

五月激情婷婷俺也去-av男人的天堂久久-久久人人爽人人爽人人片av东京热-欧美日韩一级成人免费 | 人人射人人插人人爽-日韩av一区二区男人天堂-亚洲伊人免费视频观看-久久人国产精品99久久久 | 久久久久久久久久久久久久亚洲-av亚洲一区二区三区-久久久资源在线观看-欧美日韩大陆成人 | 天天操天天干天天日天天操-人妻少妇久久久一区二区三区-日韩男女三级视频-国产又粗又猛又爽又黄的黄牛视频 | 少妇人妻天堂性色av在线软件-99热在线精品免费全部%2-91高清免费在线观看视频-国产亚洲欧美色视频 | 成人伊人久久综合网-国产对白videos麻豆高潮-精品久久久bbbb人妻-国产亚洲精品成人男人久久久国 99久久国产精品免费热6-乱码精品一区二区三区-内射中出日韩制服嫩模一区-99久久精品色 | 国产亚洲欧美精品91-欧美精品久久久久理伦-欧美中文字幕制服丝袜另类综合-一区二区三区卡欧美 | 99精产国品一二三产品香蕉-日韩熟女怡红院-久久视频在线视频观看 99-精品啪啪啪啪啪啪啪 | 一本久道久久综合狠狠躁av-久久久久久久夂夂女女女又又又被-欧美91在线播放-国产成人亚洲综合av 久久人妻视频一区二区三区-日韩欧美日韩三级-欧美亚洲成人一区二区-日韩免费码中文字幕 | 国产乱码有码一区二区三区-久久国产亚洲精品av麻豆-99热精品国产在线-中文字幕乱交免费视频 | 成人精品久久久免费看一区二区-日韩激情啪啪综合-成人国产av精品免费在线观看-欧美国产黄片在线 精品视频蜜桃久久久久-日韩美免费观看视频-精品99国产乱码久久久久密-久久久久久亚洲女同第一区暖暖 | 欧美日韩 中文字幕 丝袜-日本va中文字幕亚洲久久-日韩欧美情色一区-亚洲精品少妇av网 | 久久999精品国产只有精品-人人妻人人澡人人爽欧美精品-日韩制服在线中文字幕-欧美 日韩 三级 成人 | 中文字幕不卡一区二区-精品女同一区二区三区免费播放-久久婷婷国产91天堂综合精品-不卡久久精品国产亚洲av不卡 | 97久久香蕉国产熟女线看-日韩成人av在线二区-久久主人久久综合久久综合艹尼玛-10国产精品久久久久久 | 久久精品国产亚洲av极品美女-日韩资源中文字幕在线-国产又大又长又黄又色又爽视频-欧美日韩一区二区区别是什么 | 91大神文轩探花在线播放-天天操天天干天天日天天射天天-欧美日韩黄色网页-亚洲男人天堂av电影 | 森泽佳奈中文字幕在线-人妻丰满少妇久久久久久久久-久久熟妇人妻一区二区-av中文字幕网 | 久久久这里有精品中文字幕-国产精品高潮呻吟久久久a-亚洲va国产va欧美va精品-国产精品成人自拍在线 | 国产福利一区二区三区视频在线-国产一区二区三区18p-国产精品久久久久蜜臀-av99热在线香蕉 | 久久综合九色综合88i-国产三级韩国三级三级a级-国产又粗又硬又黄视频-精品一区二区三区高清观看 中文字幕不卡一区二区-精品女同一区二区三区免费播放-久久婷婷国产91天堂综合精品-不卡久久精品国产亚洲av不卡 | 久久久久久十八禁看-久久精品国产亚洲精品2020-成人综合网站色av-久久99久久久久久久噜噜 | 美女一区在线观看视频-日韩女同中文字幕-国产成人麻豆精品在线-久久久无性久久久 | chinese国产麻豆精品-久久久亚洲欧洲日产国产成人-蜜臀久久久久精品久久久-日韩精品亚洲天堂中文字幕 | 丁香六月婷婷视频在线-最新中文字幕版av-精品一区二区久久久久久久的-97人人妻精品 | 国产 中文 字幕 在线-婷婷一区二区欧美综合狠狠久久-日本中文字幕日韩一区-av手机在线免费观看调教 | 2018中文字幕在线观看视频-国产精品 中文字幕 有码-福利网站在线中文字幕-一本色道久久亚洲精品网 | 日韩欧美爱爱爱-最新中文亚洲高清字幕av-国产麻豆精品第一页-性视频一区二区三区在线观看 | 成人av亚洲一区二区-亚洲国产精品欧美日韩在线观看-日本中文字幕熟女人妻在线观看-色婷婷亚洲欧洲图片 | 丁香六月六月婷婷-久久久久久成人免费看a-亚洲视频啪啪啪啪啪啪-久久久免费精品国产 | 日韩一区二区三区在线观看-色婷婷久久综合丁香-日韩欧美亚洲熟女人妻-男人床上插女人视频 | www国产精品久久久-亚洲国产综合精品麻豆-婷婷 丁香 六月天-欧美亚洲熟妇一区二区三区 | 99热在线精品首页播放-日韩一级片黄色片-亚洲肥婆一区二区三区-天天插天天日天天射天天干 | 日韩女女同志vedio-久久久精品久久久精品久久久精品-性做久久久久久久久一区二区-99热精品素人在线国产 | 日韩不卡一区二区三区在线观看-中文字幕一区二区人妻精品视频-97超级碰在线精彩视频-欧美国产日韩美女被x | 久久精品在线视频播放-蜜桃中文字幕二区-99久久无色码中文字幕人妻-久久精品久久久久久婷婷日 | 99er视频,这里有精品九九-婷婷俺也去六月色综合久久激情-97超级碰撞在线视频-国产99久久婷婷视频 | 日韩成人免费片-色狠久av北条麻妃-久久综合日韩精品-粉嫩小仙女一区二区三区 | 久久精品我在看-国产又粗又长又硬又猛电影-日本一区中文字幕在线视频-日韩精品中文字幕在线观看网站大全 | 亚洲婷婷在线视频免费观看-日韩毛片内部视频在线观看-国产麻豆剧传媒精品国产av蜜桃-蜜桃精品一区二区三区免费看 | 亚洲欧美视频在线观看一区二区-欧美日韩国产精品日韩-少妇人妻偷人激情av-日韩中文字幕三区 |