React組件生命周期詳解

調(diào)用流程可以參看上圖。
React組件提供了生命周期的鉤子函數(shù)去響應(yīng)組件不同時刻的狀態(tài),組件的生命周期如下:
- 實(shí)例化
- 存在期
- 銷毀期
實(shí)例化
首次調(diào)用組件時,有以下方法會被調(diào)用(注意順序,從上到下先后執(zhí)行):
getDefaultProps
這個方法是用來設(shè)置組件默認(rèn)的props,組件生命周期只會調(diào)用一次。但是只適合react.createClass直接創(chuàng)建的組件,使用ES6/ES7創(chuàng)建的這個方法不可使用,ES6/ES7可以使用下面方式:
//es7
class Component {
static defaultProps = {}
}
//或者也可以在外面定義es6
//Compnent.defaultProps
getInitialState
設(shè)置state初始值,在這個方法中你已經(jīng)可以訪問到this.props。getDefaultProps只適合React.createClass使用。使用ES6初始化state方法如下:
class Component extends React.Component{
constructor(){
this.state = {
render: true,
}
}
componentWillMount
改方法會在組件首次渲染之前調(diào)用,這個是在render方法調(diào)用前可修改state的最后一次機(jī)會。這個方法很少用到。
render
這個方法以后大家都應(yīng)該會很熟悉,JSX通過這里,解析成對應(yīng)的虛擬DOM,渲染成最終效果。格式大致如下:
class Component extends React.Component{
render(){
return (
<div></div>
)
}
componentDidMount
這個方法在首次真實(shí)的DOM渲染后調(diào)用(僅此一次)當(dāng)我們需要訪問真實(shí)的DOM時,這個方法就經(jīng)常用到。如何訪問真實(shí)的DOM這里就不想說了。當(dāng)我們需要請求外部接口數(shù)據(jù),一般都在這里處理。
存在期
實(shí)例化后,當(dāng)props或者state發(fā)生變化時,下面方法依次被調(diào)用:
componentWillReceiveProps
每當(dāng)我們通過父組件更新子組件props時(這個也是唯一途徑),這個方法就會被調(diào)用。
componentWillReceiveProps(nextProps){}
shouldComponentUpdate
字面意思,是否應(yīng)該更新組件,默認(rèn)返回true。當(dāng)返回false時,后期函數(shù)就不會調(diào)用,組件不會在次渲染。
shouldComponentUpdate(nextProps,nextState){}
componentWillUpdate
字面意思組件將會更新,props和state改變后必調(diào)用。
render
跟實(shí)例化時的render一樣,不多說
componentDidUpdate
這個方法在更新真實(shí)的DOM成功后調(diào)用,當(dāng)我們需要訪問真實(shí)的DOM時,這個方法就也經(jīng)常用到。
銷毀期
銷毀階段,只有一個函數(shù)被調(diào)用:
componentWillUnmount
每當(dāng)組件使用完成,這個組件就必須從DOM中銷毀,此時該方法就會被調(diào)用。當(dāng)我們在組件中使用了setInterval,那我們就需要在這個方法中調(diào)用clearTimeout。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
React創(chuàng)建組件的三種方式及其區(qū)別是什么
在React中,創(chuàng)建組件的三種主要方式是函數(shù)式組件、類組件和使用React Hooks的函數(shù)式組件,本文就詳細(xì)的介紹一下如何使用,感興趣的可以了解一下2023-08-08
React+EggJs實(shí)現(xiàn)斷點(diǎn)續(xù)傳的示例代碼
這篇文章主要介紹了React+EggJs實(shí)現(xiàn)斷點(diǎn)續(xù)傳的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
可定制React自動完成搜索組件Turnstone實(shí)現(xiàn)示例
這篇文章主要為大家介紹了可定制React自動完成搜索組件Turnstone實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
使用Node搭建reactSSR服務(wù)端渲染架構(gòu)
這篇文章主要介紹了使用Node搭建reactSSR服務(wù)端渲染架構(gòu),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
React+umi+typeScript創(chuàng)建項(xiàng)目的過程
這篇文章主要介紹了React+umi+typeScript創(chuàng)建項(xiàng)目的過程,結(jié)合代碼介紹了項(xiàng)目框架搭建的方式,本文給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02

