综合久久久久久综合久 ,国第一产在线无码精品区,粗大进入日本高h视频,91尤物国产尤物福利在线,亚洲精品无码久久毛片波多野吉,五月婷婷丁香综合,二级特黄绝大片免费视频大片,国产欧美在线观看精品一区污

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

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

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


【資料圖】

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

標(biāo)簽:

推薦

財(cái)富更多》

動態(tài)更多》

熱點(diǎn)

主站蜘蛛池模板: 国产亚洲视频免费播放| 欧美一区二区三区欧美日韩亚洲| 77777亚洲午夜久久多人| 国产高清在线精品一区二区三区| 白丝美女办公室高潮喷水视频 | 亚洲日本在线免费观看| 无码免费视频| 日韩色图区| 午夜限制老子影院888| 日本精品αv中文字幕| 国产成人一区免费观看| 91啪在线| 男女精品视频| 成人国产小视频| 国产欧美视频一区二区三区| 四虎永久免费地址在线网站| 欧美成人A视频| 久久精品国产精品一区二区| 国产小视频a在线观看| 国产一区二区三区精品欧美日韩| 夜色爽爽影院18禁妓女影院| 午夜激情婷婷| 久久国产成人精品国产成人亚洲| 国产精品永久不卡免费视频| 久久伊人色| 欧类av怡春院| 91欧美在线| 亚洲第一视频免费在线| 黄色网页在线观看| 97精品久久久大香线焦| 午夜视频在线观看免费网站| 日本黄色不卡视频| 日韩亚洲高清一区二区| 成人自拍视频在线观看| 国产91蝌蚪窝| 精品無碼一區在線觀看 | 91美女视频在线| 美女高潮全身流白浆福利区| 国产成人h在线观看网站站| 国产无码网站在线观看| 美女视频黄又黄又免费高清| 国内精品免费| 98精品全国免费观看视频| 国产手机在线ΑⅤ片无码观看| 精品视频在线一区| 97视频精品全国免费观看| 日韩在线1| 欧美日韩免费| 国产喷水视频| 国产日产欧美精品| lhav亚洲精品| 中文字幕色在线| 欧美激情第一区| 国产高清在线精品一区二区三区| 亚洲视频一区| 中国精品自拍| 欲色天天综合网| 国产欧美日韩另类精彩视频| 亚洲综合久久成人AV| 激情六月丁香婷婷四房播| 深爱婷婷激情网| 人妻少妇乱子伦精品无码专区毛片| 国产精品护士| 国产白浆视频| 亚洲国内精品自在自线官| 欧美va亚洲va香蕉在线| 91精品专区| 国产午夜福利亚洲第一| 国产高清在线丝袜精品一区| 日韩国产 在线| 亚洲精品桃花岛av在线| 中国毛片网| 亚洲午夜福利精品无码| 国产美女久久久久不卡| 91久草视频| 亚洲精品国产乱码不卡| 亚洲国产天堂久久综合226114| 综合人妻久久一区二区精品 | 国产精品亚洲а∨天堂免下载| 亚洲久悠悠色悠在线播放| 国产欧美视频在线观看| 色哟哟国产精品|