最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React Class組件生命周期及執(zhí)行順序

 更新時(shí)間:2021年08月14日 14:56:22   作者:Lisong  
這篇文章主要介紹了React Class組件生命周期,包括react組件的兩種定義方式和class組件不同階段生命周期函數(shù)執(zhí)行順序,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

一、react組件的兩種定義方式

1、函數(shù)組件,簡(jiǎn)單的函數(shù)組件像下面這樣,接收Props,渲染DOM,而不關(guān)注其他邏輯

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

函數(shù)組件無(wú)法使用State,也無(wú)法使用組件的生命周期方法,沒(méi)有this,純展示型組件。

建議:在寫(xiě)組件時(shí),先思考組件應(yīng)不應(yīng)該寫(xiě)成展示型組件,能寫(xiě)成展示型組件的盡量寫(xiě)成展示型。

2、class組件,需要繼承React.Component,有State,有生命周期,有this

3、共同點(diǎn)

a、無(wú)論是使用函數(shù)或是類來(lái)聲明一個(gè)組件,它決不能修改它自己的 props

b、所有 React 組件都必須是純函數(shù),并禁止修改其自身 props

c、React是單項(xiàng)數(shù)據(jù)流,父組件改變了屬性,那么子組件視圖會(huì)更新

d、屬性 props 是外界傳遞過(guò)來(lái)的,狀態(tài) state 是組件本身的,狀態(tài)可以在組件中任意修改

e、組件的屬性和狀態(tài)改變都會(huì)更新視圖

4、組件定義的注意事項(xiàng)

a、組件名稱必須是大寫(xiě)字母開(kāi)頭

b、組件的返回值只能有一個(gè)根元素

二、class組件不同階段生命周期函數(shù)執(zhí)行順序

1、class組件執(zhí)行順序如下圖

新增:getDerivedStateFromProps,getSnapshotBeforeUpdate

UNSAFE:UNSAFE_componentWillMount,UNSAFE_componentWillUpdate,UNSAFE_componentWillReceiveProps這三個(gè)方法17以后的版本會(huì)去掉

掛載(Mounting)指組件被實(shí)例化并插入到dom中,順序如下:

constructor -> getDerivedStateFromProps -> render -> componentDidMount

更新(Updating)指當(dāng)state變化或者props變化會(huì)引起更新,順序如下:

getDerivedStateFromProps -> shouldComponentUpdate -> render -> getSnapshotBeforeUpdate -> componentDidUpdate

卸載指的是組件被從dom移除,只會(huì)執(zhí)行一個(gè)生命周期:componentWillUnmount

2、constructor(),在 React 組件掛載時(shí),會(huì)首先調(diào)用它的構(gòu)造函數(shù)。

作用:通常,在 React 中,在構(gòu)造函數(shù)中只做兩件事:

a、通過(guò)給 this.state 賦值對(duì)象來(lái)初始化內(nèi)部 state。

b、為事件處理函數(shù)綁定實(shí)例

注意:

a、在為 React.Component 子類實(shí)現(xiàn)構(gòu)造函數(shù)時(shí),應(yīng)在其他語(yǔ)句之前前調(diào)用 super(props)。

否則 this.props 在構(gòu)造函數(shù)中可能會(huì)出現(xiàn)未定義的

b、不要在里邊調(diào)用setState

3、componentWillMount(),在 React 組件掛載時(shí)render之前。

作用:可以調(diào)用setState方法,修改state。同步方法會(huì)阻塞,不會(huì)引起二次渲染,異步方法不會(huì)阻塞,會(huì)

引起二次渲染。

注意:該方法已被標(biāo)記為不安全,盡量不使用。

4、getDerivedStateFromProps((props, state), 靜態(tài)方法,為了讓 props 能更新到組件內(nèi)部state 中,掛

載和更新時(shí)都會(huì)調(diào)用。

作用:

a、無(wú)條件的根據(jù) prop 來(lái)更新內(nèi)部 state,也就是只要有傳入 prop 值, 就更新 state

b、只有 prop 值和 state 值不同時(shí)才更新 state 值

注意:

a、不能在方法內(nèi)使用this

b、如果props傳入的內(nèi)容不需要影響到你的state,那么就需要返回一個(gè)null,這個(gè)返回值是必

須的,所以盡量將其寫(xiě)到函數(shù)的末尾

異步處理:

以前,我們可以在props發(fā)生改變的時(shí)候,在componentWillReceiveProps中進(jìn)行異步操作,將

props的改變驅(qū)動(dòng)到state的改變。

react setState操作是會(huì)通過(guò)transaction進(jìn)行合并的,由此導(dǎo)致的更新過(guò)程是batch的,而react

中大部分的更新過(guò)程的觸發(fā)源都是setState,所以render觸發(fā)的頻率并不會(huì)非常頻繁

現(xiàn)在,為了響應(yīng)props的變化,我們應(yīng)該再componentDidUpdate中進(jìn)行異步操作,響應(yīng)變化

5、shouldComponentUpdate(nextProps, nextState),更新時(shí)也就是state或props發(fā)生變化時(shí),會(huì)在

render執(zhí)行之前被調(diào)用

作用:

a、性能優(yōu)化的生命周期方法,修改后的props和state在該方法都可以拿到,與原props和state對(duì)

比判斷是否需要渲染

注意:

a、此方法的返回值必須是true或者false,返回false將不執(zhí)行render

6、render(), class 組件中唯一必須實(shí)現(xiàn)的方法,純函數(shù)

作用:

a、組件和dom節(jié)點(diǎn)都寫(xiě)在這里,返回一個(gè)jsx,經(jīng)過(guò)編輯之后是React.createElement的表達(dá)式

注意:

a、組件名稱首字母要大寫(xiě)

b、只能有一個(gè)根節(jié)點(diǎn)

c、可以使用<></>作為根節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)不會(huì)渲染,React.Fragment的簡(jiǎn)寫(xiě)

7、getSnapshotBeforeUpdate(prevProps, prevState),在最近一次渲染輸出(提交到 DOM 節(jié)點(diǎn))

之前調(diào)用,未伸入測(cè)試,了解僅限與此

作用:

a、它使得組件能在發(fā)生更改之前從 DOM 中捕獲一些信息(例如,滾動(dòng)位置)。此生命周期的任何

返回值將作為參數(shù)傳遞給 componentDidUpdate()

8、componentDidMount(), 會(huì)在組件掛載后(插入 DOM 樹(shù)中)立即調(diào)用

作用:

a、setState

b、操作dom

c、發(fā)送請(qǐng)求獲取初始數(shù)據(jù)

9、 componentDidUpdate(prevProps, prevState) ,會(huì)在更新(dom已經(jīng)更新)后會(huì)被立即調(diào)用

作用:

a、setState

b、操作dom

c、發(fā)送請(qǐng)求獲取數(shù)據(jù)

注意:

a、setState必須被包裹在一個(gè)條件語(yǔ)句里,否則會(huì)導(dǎo)致死循環(huán)

10、componentWillUnmount(),會(huì)在組件卸載及銷毀之前直接調(diào)用

作用:在這里可以釋放資源, 比如清除定時(shí)器, removeEventListener

注意:這里邊setState是無(wú)效的, 不應(yīng)該調(diào)用

11、getDerivedStateFromError 還未詳細(xì)了解

12、componentDidCatch 還未詳細(xì)了解

三、參考

官方生命周期API https://react.docschina.org/docs/react-component.html

到此這篇關(guān)于React Class組件生命周期的文章就介紹到這了,更多相關(guān)React Class組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React useReducer終極使用教程

    React useReducer終極使用教程

    useReducer是在react V16.8推出的鉤子函數(shù),從用法層面來(lái)說(shuō)是可以代替useState。相信前期使用過(guò) React 的前端同學(xué),大都會(huì)經(jīng)歷從class語(yǔ)法向hooks用法的轉(zhuǎn)變,react的hooks編程給我們帶來(lái)了絲滑的函數(shù)式編程體驗(yàn)
    2022-10-10
  • React學(xué)習(xí)筆記之事件處理(二)

    React學(xué)習(xí)筆記之事件處理(二)

    這篇文章主要跟大家介紹了關(guān)于React中事件處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)React具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • React中條件渲染的常見(jiàn)方法總結(jié)

    React中條件渲染的常見(jiàn)方法總結(jié)

    條件渲染在React開(kāi)發(fā)中非常重要的功能,它允許開(kāi)發(fā)人員根據(jù)條件控制渲染的內(nèi)容,在創(chuàng)建動(dòng)態(tài)和交互式用戶界面方面發(fā)揮著至關(guān)重要的作用,本文總結(jié)了常用的的條件渲染方法,需要的朋友可以參考下
    2024-01-01
  • react中使用echarts,并實(shí)現(xiàn)tooltip循環(huán)輪播方式

    react中使用echarts,并實(shí)現(xiàn)tooltip循環(huán)輪播方式

    這篇文章主要介紹了react中使用echarts,并實(shí)現(xiàn)tooltip循環(huán)輪播方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • React封裝CustomSelect組件思路詳解

    React封裝CustomSelect組件思路詳解

    小編需要封裝一個(gè)通過(guò)Popover彈出框里可以自定義渲染內(nèi)容的組件,渲染內(nèi)容暫時(shí)有: 單選框, 復(fù)選框,接下來(lái)通過(guò)本文給大家分享React封裝CustomSelect組件思路,需要的朋友可以參考下
    2022-07-07
  • React虛擬列表的實(shí)現(xiàn)

    React虛擬列表的實(shí)現(xiàn)

    在開(kāi)發(fā)過(guò)程中,總是遇到很多列表的顯示。當(dāng)上數(shù)量級(jí)別的列表渲染于瀏覽器,終會(huì)導(dǎo)致瀏覽器的性能下降,你可以選擇其他方式避免,本文就介紹了虛擬列表來(lái)解決這個(gè)問(wèn)題
    2021-05-05
  • React Hooks常用場(chǎng)景的使用(小結(jié))

    React Hooks常用場(chǎng)景的使用(小結(jié))

    這篇文章主要介紹了React Hooks常用場(chǎng)景的使用,根據(jù)使用場(chǎng)景分別進(jìn)行舉例說(shuō)明,幫助你認(rèn)識(shí)理解并可以熟練運(yùn)用 React Hooks 大部分特性,感興趣的可以了解一下
    2021-04-04
  • react解析html字符串方法實(shí)現(xiàn)

    react解析html字符串方法實(shí)現(xiàn)

    在使用reactjs庫(kù)的時(shí)候,會(huì)遇到將一段html的字符串,然后要將它插入頁(yè)面中以html的形式展現(xiàn),本文主要介紹了react解析html字符串方法實(shí)現(xiàn),感興趣的可以了解一下
    2023-12-12
  • React組件化的一些額外知識(shí)點(diǎn)補(bǔ)充

    React組件化的一些額外知識(shí)點(diǎn)補(bǔ)充

    React是一個(gè)用于構(gòu)建用戶界面的JavaScript庫(kù),下面這篇文章主要給大家介紹了關(guān)于React組件化的一些額外知識(shí)點(diǎn),文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • React this.setState方法使用原理分析介紹

    React this.setState方法使用原理分析介紹

    我們知道,在React中沒(méi)有像Vue那種數(shù)據(jù)雙向綁定的效果。而this.setState方法就是用來(lái)對(duì)數(shù)據(jù)進(jìn)行更改的。而通過(guò)this.setState方法更改的數(shù)據(jù),會(huì)讓組件的render重新渲染,并且刷新數(shù)據(jù)
    2022-09-09

最新評(píng)論

上饶市| 宜阳县| 黔江区| 莱州市| 延吉市| 那曲县| 桐城市| 仁布县| 兰坪| 阿拉善右旗| 鹤庆县| 松桃| 浠水县| 宣恩县| 新兴县| 荆门市| 孝昌县| 炎陵县| 鲁山县| 石城县| 嘉定区| 长兴县| 沾益县| 汨罗市| 信阳市| 濮阳县| 鄂伦春自治旗| 苍南县| 青田县| 兰溪市| 屏边| 县级市| 沽源县| 区。| 旬阳县| 大渡口区| 凤山县| 洪泽县| 定州市| 乐昌市| 合作市|