摘要:完整生命周期初始化參數(shù)第一次渲染當(dāng)父組件向子組件傳入發(fā)生改變后,依次調(diào)用子組件更新渲染當(dāng)組件自身發(fā)生變化后組件再次更新渲染當(dāng)組件卸載生命周期詳解此處請(qǐng)求接口數(shù)據(jù)子組件獲得新時(shí)觸發(fā),作用是在子組件再次渲染前,更新子組件自身的,之后會(huì)觸發(fā)接受的
完整生命周期
constructor(props) // 初始化參數(shù) componentWillMount() render() // 第一次渲染 componentDidMount() 當(dāng)父組件向子組件傳入props發(fā)生改變后,依次調(diào)用 componentWillReceiveProps(nextProps) shouldComponentUpdate(nextProps, nextState) componentWillUpdate() render() //子組件更新渲染 componentDidUpdate() 當(dāng)組件自身state發(fā)生變化后 componentWillUpdate() render() //組件再次更新渲染 componentDidUpdate() 當(dāng)組件卸載 componentWillUnmount()生命周期詳解
componentDidMount() 此處請(qǐng)求接口數(shù)據(jù)
componentWillReceiveProps(nextProps) 子組件獲得新props時(shí)觸發(fā),作用是在子組件再次渲染前,更新子組件自身的state,之后會(huì)觸發(fā)shouldComponentUpdate()
shouldComponentUpdate(nextProps, nextState) 接受的props發(fā)生變化或者自身state變化都會(huì)觸發(fā)該生命周期,在此生命周期可以做一些渲染的優(yōu)化,默認(rèn)返回true,就是默認(rèn)需要更新組件,重新渲染,nextProps nextState 都是新state 新props,this.props this.state 表示舊的props state,根據(jù)需求做優(yōu)化,比如在某些情況下返回false,便不再進(jìn)行組件更新了,提升頁面性能
static getDerivedStateFormProps(nextProps, prevState) 替代 componentWillReceiveProps 返回的結(jié)果會(huì)送給setState 如果什么都不改變就返回null static 聲明靜態(tài)函數(shù),無法訪問this,也就是一個(gè)純函數(shù),輸出完全由輸入決定 除了shouldComponentUpdate之外,render前的所有生命周期都被替代 返回新的state,重新進(jìn)行setSate后,react會(huì)去控制不再進(jìn)行新的更新 AJAX請(qǐng)求在依舊在componentDidMount 中進(jìn)行,只有在一些特定情況下實(shí)用 (此處還未深入了解 貌似用的場(chǎng)景很少 eg: static getDerivedStateFromProps(nextProps, prevState) { console.log(nextProps); // 新傳入的props console.log(prevState); // 舊的state //console.log(this.props); return { value: nextProps.value } }例子
這個(gè)例子讓你更好的理解幾個(gè)生命周期的作用 Github地址在這里
參考react官方文檔 State & 生命周期 && 性能優(yōu)化 章節(jié)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/100903.html
摘要:因?yàn)榘姹緦⒄嬲龔U棄這三生命周期到目前為止,的渲染機(jī)制遵循同步渲染首次渲染,更新時(shí)更新時(shí)卸載時(shí)期間每個(gè)周期函數(shù)各司其職,輸入輸出都是可預(yù)測(cè),一路下來很順暢。通過進(jìn)一步觀察可以發(fā)現(xiàn),預(yù)廢棄的三個(gè)生命周期函數(shù)都發(fā)生在虛擬的構(gòu)建期間,也就是之前。 showImg(https://segmentfault.com/img/bVbweoj?w=559&h=300); 背景 前段時(shí)間準(zhǔn)備前端招聘事項(xiàng)...
摘要:卸載階段組件卸載和銷毀老版生命周期之前的生命周期初始化階段涉及個(gè)鉤子函數(shù)這些方法會(huì)在組件初始化的時(shí)候被調(diào)用,只跟實(shí)例的創(chuàng)建有關(guān)。 前言:React 的版本從 v15 到 v16.3 ,再到v16.4,現(xiàn)在最新的版本是 v16.8了。其中最大的變化可能是React Hooks的加入,而最令人困惑的卻是它的生命周期,新舊生命周期函數(shù)混雜在一起,難免會(huì)讓許多新來者有很多困惑。所以這一篇我們來...
摘要:的返回值將作為的參數(shù),如果返回,則不更新,不能返回或以外的值,否則會(huì)警告。在更新之前調(diào)用,此時(shí)已更新返回值作為的第個(gè)參數(shù)一般用于獲取之前的數(shù)據(jù)語法是從的返回值,默認(rèn)是的使用場(chǎng)景一般是獲取組建更新之前的滾動(dòng)條位置。 React16 后的各功能點(diǎn)是多個(gè)版本陸陸續(xù)續(xù)迭代增加的,本篇文章的講解是建立在 16.6.0 版本上本篇文章主旨在介紹 React16 之后版本中新增或修改的地方,所以對(duì)于...
摘要:已經(jīng)被廢除,具體缺陷可以參考二為了解決的缺陷,第二種解決方案是高階組件簡稱。我們定義了父組件,存在自身的,并且將自身的通過的方式傳遞給了子組件。返回一個(gè)標(biāo)識(shí)該的變量,以及更新該的方法。 ??為了實(shí)現(xiàn)分離業(yè)務(wù)邏輯代碼,實(shí)現(xiàn)組件內(nèi)部相關(guān)業(yè)務(wù)邏輯的復(fù)用,在React的迭代中針對(duì)類組件中的代碼復(fù)用依次發(fā)布了Mixin、HOC、Render props等幾個(gè)方案。此外,針對(duì)函數(shù)組件,在Reac...
摘要:已經(jīng)被廢除,具體缺陷可以參考二為了解決的缺陷,第二種解決方案是高階組件簡稱。我們定義了父組件,存在自身的,并且將自身的通過的方式傳遞給了子組件。返回一個(gè)標(biāo)識(shí)該的變量,以及更新該的方法。 ??為了實(shí)現(xiàn)分離業(yè)務(wù)邏輯代碼,實(shí)現(xiàn)組件內(nèi)部相關(guān)業(yè)務(wù)邏輯的復(fù)用,在React的迭代中針對(duì)類組件中的代碼復(fù)用依次發(fā)布了Mixin、HOC、Render props等幾個(gè)方案。此外,針對(duì)函數(shù)組件,在Reac...
閱讀 2570·2021-11-23 09:51
閱讀 3365·2021-11-22 15:22
閱讀 1878·2021-11-18 13:22
閱讀 2273·2021-09-24 09:48
閱讀 1318·2019-08-29 13:58
閱讀 1309·2019-08-26 13:39
閱讀 2452·2019-08-26 10:48
閱讀 3040·2019-08-26 10:21