国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

react17:生命周期函數(shù)

這篇具有很好參考價(jià)值的文章主要介紹了react17:生命周期函數(shù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

  • 掛載時(shí)
  • 更新時(shí)
    • setState觸發(fā)更新、父組件重新渲染時(shí)觸發(fā)更新
    • forceUpdate觸發(fā)更新
  • 卸載時(shí)

react(v17.0.2)的生命周期圖譜如下。?

react17:生命周期函數(shù),前端,javascript,react.js

相較于16版本,17版本生命周期函數(shù)有如下變化:

componentWillMount()
componentWillUpdate()
componentWillReceiveProps()
+getDerivedStateFromProps(props,state)
+getSnapshotBeforeUpdate(prevProps,prevState)
雖然UNSAFE_componentWillMount、UNSAFE_componentWillUpdate、UNSAFE_componentWillReceiveProps當(dāng)前依然可用,但在react未來的版本中可能被移除,所以盡量避免使用。更多可以訪問如下鏈接:

?https://react.docschina.org/docs/react-component.html。
https://react.docschina.org/blog/2018/03/27/update-on-async-rendering.html。

掛載時(shí)

組件掛載時(shí),會(huì)依次調(diào)用如下生命周期函數(shù):

  1. constructor(props)
  2. static getDerivedStateFromProps(props)
  3. render()
  4. componentDidMount()

?其中,getDerivedStateFromProps必須用static修飾,它是類上的方法。且必須返回null或者狀態(tài)對(duì)象(State Obect)。

getDerivedStateFromProps在實(shí)際開發(fā)中幾乎不用,僅適用于state唯一取決于props的場景。

react17:生命周期函數(shù),前端,javascript,react.js

更新時(shí)

setState觸發(fā)更新、父組件重新渲染時(shí)觸發(fā)更新

setState、父組件重新渲染觸發(fā)更新時(shí),會(huì)依次調(diào)用如下生命周期函數(shù):

1、static getDerivedStateFromProps()
2、shouldComponentUpdate(nextProps,nextState)
3、render()
4、getSnapshotBeforeUpdate(prevProps,prevState)
5、componentDidUpdate(prevProps,prevState,snapshot)

其中,getSnapshotBeforeUpdate(prevProps,prevState)必須返回null或任意快照值(Snapshot Value,undefined除外)。返回的快照值將作為componentDidUpdate的第三個(gè)形參。
react17:生命周期函數(shù),前端,javascript,react.js

forceUpdate觸發(fā)更新

forceUpdate觸發(fā)更新,會(huì)依次調(diào)用以下生命周期函數(shù):

  1. static getDerivedStateFromProps()
  2. render()
  3. getSnapshotBeforeUpdate()
  4. componentDidUpdate()

react17:生命周期函數(shù),前端,javascript,react.js

卸載時(shí)

組件卸載時(shí),會(huì)調(diào)用生命周期函數(shù):

  1. componentWillUnmount()

react17:生命周期函數(shù),前端,javascript,react.js文章來源地址http://www.zghlxwxcb.cn/news/detail-682148.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>test</title>
    <script src="https://unpkg.com/react@17.0.2/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
</head>

<body>
    <div id="app"></div>
    <script type="text/babel">
        class Count extends React.Component{
            constructor(props){
                console.log("Count---constructor");
                super(props);
                this.state = {
                    count:0
                }
            }
            componentDidMount(){
                console.log("Count---componentDidMount");
            }
            static getDerivedStateFromProps(){
                console.log("Count---getDerivedStateFromProps");
                return null;
            }
            shouldComponentUpdate(){
                console.log("Count---shouldComponentUpdate");
                return true;
            }
            getSnapshotBeforeUpdate(){
                console.log("Count---getSnapshotBeforeUpdate");
                return null;
            }
            componentDidUpdate(){
                console.log("Count---componentDidUpdate");
            }
            componentWillUnmount(){
                console.log("Count---componentWillUnmount");
            }

            death = () => {
                ReactDOM.unmountComponentAtNode(document.getElementById("app"));
            }
            add = () => {
                const {count} = this.state;
                this.setState({
                    count:count+1
                })
            }
            force = () => {
                this.forceUpdate();
            }

            render(){
                console.log("Count---render");
                const {count} = this.state;
                const {add,death,force} = this;

                return (
                    <div>
                        <h2>當(dāng)前值為:{count}</h2>
                        <button onClick={add}>點(diǎn)我加1</button>&nbsp;
                        <button onClick={force}>強(qiáng)制更新</button>&nbsp;
                        <button onClick={death}>卸載組件</button>
                    </div>
                )
            }
        }

        ReactDOM.render(<Count/>,document.getElementById("app"));
    </script>
</body>

</html>

到了這里,關(guān)于react17:生命周期函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JavaScript函數(shù)變量的生命周期,自執(zhí)行函數(shù)、閉包、反轉(zhuǎn)數(shù)組案例及冒泡排序案例

    JavaScript函數(shù)變量的生命周期,自執(zhí)行函數(shù)、閉包、反轉(zhuǎn)數(shù)組案例及冒泡排序案例

    一、變量的生命周期 JavaScript 變量的生命期從它們被聲明的時(shí)間開始。 局部變量會(huì)在函數(shù)運(yùn)行以后被刪除。 全局變量會(huì)在頁面關(guān)閉后被刪除。 二、自執(zhí)行函數(shù) 執(zhí)行函數(shù)通常都是定義之后立即執(zhí)行,以后都不再會(huì)調(diào)用,所以聲明時(shí)可以省略函數(shù)名,因此自執(zhí)行函數(shù)又叫匿名函

    2024年02月06日
    瀏覽(21)
  • 【前端】Vue生命周期函數(shù)(詳細(xì)講解+中文圖解)

    【前端】Vue生命周期函數(shù)(詳細(xì)講解+中文圖解)

    生命周期: 從vue實(shí)例產(chǎn)生開始到vue實(shí)例被銷魂這段時(shí)間所經(jīng)歷的過程 vue實(shí)例的 創(chuàng)建和銷毀過程 好比 人的一生從出現(xiàn)到死亡過程 。在其中一些 重大經(jīng)歷 ,也就是特殊時(shí)間點(diǎn),我們可以做什么事情 在vue的一生中,從vue組件創(chuàng)建開始一直到其被銷毀時(shí)的時(shí)間段中,也被建立了

    2024年02月13日
    瀏覽(35)
  • react中使用shouldComponentUpdate生命周期函數(shù)調(diào)用setState引起的無限循環(huán)的錯(cuò)誤

    在 React 組件中,當(dāng)在 componentWillUpdate 或 componentDidUpdate 生命周期方法中調(diào)用 setState 時(shí),會(huì)觸發(fā)無限循環(huán),導(dǎo)致超過最大更新深度。 在React組件中 ,我們使用componentWillUpdate 或 componentDidUpdate 生命周期方法中調(diào)用 setState 方法,但是調(diào)用seState會(huì)導(dǎo)致組件重新渲染 ,那么這個(gè)生命

    2024年02月12日
    瀏覽(23)
  • 面試中問:React中函數(shù)組件和class組件的區(qū)別,hooks模擬生命周期

    React 的函數(shù)組件和類組件在很多方面都相似,但它們也有一些關(guān)鍵的差異。以下是這兩種組件之間的主要區(qū)別: 定義方式 : 函數(shù)組件 : 是簡單的 JavaScript 函數(shù),接受 props 為參數(shù),并返回 React 元素。 類組件 : 是 ES6 的類,繼承的時(shí)候要用到 extends React.Component,至少包含一個(gè)名

    2024年02月11日
    瀏覽(51)
  • 微信小程序——生命周期,生命周期的分類,頁面生命周期,生命周期函數(shù)的分類,應(yīng)用的生命周期函數(shù),頁面的生命周期函數(shù),wxs腳本概述

    微信小程序——生命周期,生命周期的分類,頁面生命周期,生命周期函數(shù)的分類,應(yīng)用的生命周期函數(shù),頁面的生命周期函數(shù),wxs腳本概述

    生命周期( Life Cycle )是指一個(gè)對(duì)象從創(chuàng)建-運(yùn)行-銷毀的整個(gè)階段,強(qiáng)調(diào)的是一個(gè)時(shí)間段。 例如: .張三出生,表示這個(gè)人生命周期的開始 .張三離世,表示這個(gè)人生命周期的結(jié)束 .中間張三的一生,就是張三的生命周期 我們可以把每個(gè)小程序運(yùn)行的過程,也概括為生命周

    2024年02月01日
    瀏覽(29)
  • Ionic4 生命周期鉤子函數(shù)和angular生命周期鉤子函數(shù)介紹

    Ionic 4(以及之后的 Ionic 版本)使用了 Angular 生命周期鉤子,因?yàn)?Ionic 是基于 Angular 構(gòu)建的。因此,Ionic 4 中的生命周期與 Angular 組件生命周期非常相似。以下是一些常見的 Ionic 4 生命周期鉤子: ionViewDidLoad : 在頁面加載完成后觸發(fā)。通常用于執(zhí)行一次性的初始化任務(wù)。不推

    2024年02月07日
    瀏覽(27)
  • 什么是Vue中的生命周期鉤子函數(shù)?有哪些主要的生命周期鉤子函數(shù)?如何監(jiān)聽DOM事件?

    Vue中的生命周期鉤子函數(shù)是指在Vue實(shí)例創(chuàng)建、數(shù)據(jù)綁定、組件掛載等生命周期階段中,可以執(zhí)行一些特定操作的函數(shù)。這些函數(shù)在Vue實(shí)例的不同生命周期階段被調(diào)用,可以幫助開發(fā)者更好地控制Vue實(shí)例的行為。 Vue的生命周期鉤子函數(shù)包括: beforeCreate :在Vue實(shí)例創(chuàng)建之前調(diào)用

    2024年02月12日
    瀏覽(20)
  • Vue生命周期函數(shù)(詳解)

    Vue生命周期函數(shù)(詳解)

    目錄 ?生命周期圖 生命周期函數(shù) beforeCreate和created的區(qū)別 beforeCreate創(chuàng)建前應(yīng)用場景 ?created創(chuàng)建后應(yīng)用場景 beforeMount和mounted的區(qū)別 ?beforeMount掛載前應(yīng)用場景 ?mounted掛載后應(yīng)用場景 ?beforeUpdate和updated的區(qū)別 ?beforeUpdate更新前應(yīng)用場景 ?updated更新后應(yīng)用場景 ?beforeDestroy和des

    2024年02月13日
    瀏覽(24)
  • [Angular 基礎(chǔ)] - 生命周期函數(shù)

    [Angular 基礎(chǔ)] - 生命周期函數(shù)

    之前的筆記: [Angular 基礎(chǔ)] - Angular 渲染過程 組件的創(chuàng)建 [Angular 基礎(chǔ)] - 數(shù)據(jù)綁定(databinding) [Angular 基礎(chǔ)] - 指令(directives) 以上為靜態(tài)頁面,即不涉及到跨組件交流的內(nèi)容 以下涉及到組件內(nèi)的溝通,從這開始數(shù)據(jù)就“活”了 [Angular 基礎(chǔ)] - 自定義事件 自定義屬性 [Angular 基礎(chǔ)]

    2024年02月20日
    瀏覽(22)
  • 生命周期函數(shù)和wxs腳本

    生命周期函數(shù)和wxs腳本

    應(yīng)用的生命周期函數(shù):指小程序從啟動(dòng) - 運(yùn)行 - 銷毀期間依次調(diào)用的那些函數(shù)。 小程序的應(yīng)用生命周期函數(shù)需要在 app.js 中進(jìn)行聲明。 上面這張圖就是從前臺(tái)進(jìn)入了后臺(tái)。后臺(tái)進(jìn)入前臺(tái)反之同理。 頁面的生命周期函數(shù):指小程序中,每個(gè)頁面從加載 - 渲染 - 銷毀期間依次調(diào)

    2024年02月16日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包