React Native 組件生命周期

      網友投稿 838 2022-05-30

      React Native中的component跟Android中的activity,fragment等一樣,存在生命周期,下面先給出component的生命周期圖

      getDefaultProps

      執行過一次后,被創建的類會有緩存,映射的值會存在this.props,前提是這個prop不是父組件指定的

      這個方法在對象被創建之前執行,因此不能在方法內調用this.props?,另外,注意任何getDefaultProps()返回的對象在實例***享,不是復制

      getInitialState

      控件加載之前執行,返回值會被用于state的初始化值

      componentWillMount

      執行一次,在初始化render之前執行,如果在這個方法內調用setState,render()知道state發生變化,并且只執行一次

      render

      render的時候會調用render()會被調用

      調用render()方法時,首先檢查this.props和this.state返回一個子元素,子元素可以是DOM組件或者其他自定義復合控件的虛擬實現

      如果不想渲染可以返回null或者false,這種場景下,React渲染一個

      render()方法是很純凈的,這就意味著不要在這個方法里初始化組件的state,每次執行時返回相同的值,不會讀寫DOM或者與服務器交互,如果必須如服務器交互,在componentDidMount()方法中實現或者其他生命周期的方法中實現,保持render()方法純凈使得服務器更準確,組件更簡單

      componentDidMount

      在初始化render之后只執行一次,在這個方法內,可以訪問任何組件,componentDidMount()方法中的子組件在父組件之前執行

      從這個函數開始,就可以和 JS 其他框架交互了,例如設置計時 setTimeout 或者 setInterval,或者發起網絡請求

      shouldComponentUpdate

      這個方法在初始化render時不會執行,當props或者state發生變化時執行,并且是在render之前,當新的props或者state不需要更新組件時,返回false

      當shouldComponentUpdate方法返回false時,講不會執行render()方法,componentWillUpdate和componentDidUpdate方法也不會被調用

      React Native 組件生命周期

      默認情況下,shouldComponentUpdate方法返回true防止state快速變化時的問題,但是如果·state不變,props只讀,可以直接覆蓋shouldComponentUpdate用于比較props和state的變化,決定UI是否更新,當組件比較多時,使用這個方法能有效提高應用性能

      componentWillUpdate

      當props和state發生變化時執行,并且在render方法之前執行,當然初始化render時不執行該方法,需要特別注意的是,在這個函數里面,你就不能使用this.setState來修改狀態。這個函數調用之后,就會把nextProps和nextState分別設置到this.props和this.state中。緊接著這個函數,就會調用render()來更新界面了

      componentDidUpdate

      組件更新結束之后執行,在初始化render時不執行

      componentWillReceiveProps

      當props發生變化時執行,初始化render時不執行,在這個回調函數里面,你可以根據屬性的變化,通過調用this.setState()來更新你的組件狀態,舊的屬性還是可以通過this.props來獲取,這里調用更新狀態是安全的,并不會觸發額外的render調用

      componentWillUnmount

      void componentWillUnmount()

      當組件要被從界面上移除的時候,就會調用componentWillUnmount(),在這個函數中,可以做一些組件相關的清理工作,例如取消計時器、網絡請求等

      總結

      React Native的生命周期就介紹完了,其中最上面的虛線框和右下角的虛線框的方法一定會執行,左下角的方法根據props?state是否變化去執行,其中建議只有在componentWillMount,componentDidMount,componentWillReceiveProps方法中可以修改state值

      英文地址:https://facebook.github.io/react/docs/component-specs.html#lifecycle-methods

      本文轉載自異步社區

      React

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:在Angular中使用Service
      下一篇:局域網部署私有yum倉庫
      相關文章
      亚洲精品无码mⅴ在线观看| 亚洲黄色免费网站| 亚洲一卡2卡4卡5卡6卡残暴在线| 久久精品国产精品亚洲精品| 国产亚洲精品拍拍拍拍拍| 亚洲国产小视频精品久久久三级 | 亚洲AV日韩精品久久久久久久| 国产亚洲精品AA片在线观看不加载| 亚洲国产成人精品91久久久 | 亚洲日本在线观看| 亚洲欧洲日产国码久在线观看 | 丰满亚洲大尺度无码无码专线| 亚洲欧洲AV无码专区| 亚洲精品无码av中文字幕| 亚洲AV无码AV吞精久久| 亚洲av无码兔费综合| 亚洲 自拍 另类小说综合图区| 国产亚洲男人的天堂在线观看 | 亚洲精品美女久久久久99小说| 亚洲国产精品一区二区九九 | 国产偷窥女洗浴在线观看亚洲 | 亚洲国产熟亚洲女视频| 亚洲色欲色欲www在线播放| 亚洲精品无码久久久久APP| 鲁死你资源站亚洲av| 亚洲高清成人一区二区三区 | 亚洲国产精品综合久久2007| 久久精品国产亚洲αv忘忧草| 亚洲xxxx18| 亚洲av无一区二区三区| 亚洲国产成人精品女人久久久| 亚洲人成电影在线播放| 亚洲精品无码久久千人斩| 亚洲av不卡一区二区三区| 亚洲综合精品一二三区在线| 亚洲免费二区三区| 亚洲老熟女五十路老熟女bbw| 亚洲AV成人精品日韩一区18p| 中文字幕在亚洲第一在线| 亚洲AV无码一区二区三区系列| 亚洲综合无码一区二区|