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

React中useEffect與生命周期鉤子函數(shù)的對應(yīng)關(guān)系說明

 更新時間:2022年09月14日 14:10:45   作者:TumbleweeD_*  
這篇文章主要介紹了React中useEffect與生命周期鉤子函數(shù)的對應(yīng)關(guān)系說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

React useEffect與生命周期鉤子函數(shù)的對應(yīng)關(guān)系

在React的函數(shù)組件中,useEffect的作用其實也對標了類組件中的生命周期,它的四種使用格式也與生命周期的四種鉤子函數(shù)形成著對應(yīng)關(guān)系。

使用格式一:不帶參數(shù)的情況

 執(zhí)行時機:(1)初始執(zhí)行 (2)每次頁面更新之后都要執(zhí)行

    useEffect( () => {
    //執(zhí)行函數(shù)
     })

對應(yīng)關(guān)系:componentDidMount + componentDidUpdate

使用格式二:帶第二個參數(shù),參數(shù)為空數(shù)組

 執(zhí)行時機:只執(zhí)行第一次(初始執(zhí)行)

    useEffect( () => {
    //執(zhí)行函數(shù)
     }, [] )

對應(yīng)關(guān)系:componentDidMount

使用場景:事件綁定、發(fā)起ajax請求

使用格式三:帶第二個參數(shù),并且指定了依賴項

 執(zhí)行時機:只執(zhí)行第一次(初始執(zhí)行)

    useEffect( () => {
    //執(zhí)行函數(shù)
     }, [] )

對應(yīng)關(guān)系:componentDidMount

使用場景:事件綁定、發(fā)起ajax請求

使用格式四:依賴項為空,沒有具體的副作用函數(shù).但是有副作用函數(shù)的清理函數(shù).

 執(zhí)行時機:組件銷毀時

    useEffect( () => {
      return () => { 清理函數(shù) }
     }, [] )

對應(yīng)關(guān)系:componentWillUnMount

使用場景:組件銷毀時,清除遺留的事件綁定和定時器.

React函數(shù)式組件用useEffect模擬三個生命周期鉤子函數(shù)

首先我們知道在React中的函數(shù)式組件是沒有生命周期的,那我們想在函數(shù)式組件中實現(xiàn)class組件中生命周期鉤子函數(shù)的效果應(yīng)該怎么操作呢?

這里就得用到一個hooks來模擬鉤子函數(shù),這個hooks就是useEffect,這個useEffect可以模擬三個鉤子函數(shù),分別是componentDidMount,componentWillUnmount和componentDidUpdate。

先貼代碼為敬

React.useEffect(() => {
?? ?console.log("這是模擬componentDidMount鉤子函數(shù)")
?? ?return () => {//return出來的函數(shù)本來就是更新前,銷毀前執(zhí)行的函數(shù),現(xiàn)在不監(jiān)聽任何狀態(tài),所以只在銷毀前執(zhí)行
?? ??? ?console.log("這是模擬componentWillUnmount鉤子函數(shù)")
?? ?}
},[])//第二個參數(shù)一定是一個空數(shù)組,因為如果不寫會默認監(jiān)聽所有狀態(tài),這樣寫就不會監(jiān)聽任何狀態(tài),只在初始化時執(zhí)行一次。

通過上面這種寫法就可以同時模擬componentDidMount和componentWillUnmount鉤子函數(shù)。接下來說componentDidUpdate

//在此之前需要使用useRef這個hooks
const flag = React.useRef(null)
React.useEffect(() => {
?? ?if(!flag.current){
?? ??? ?flag.current = true
?? ?} else {
?? ??? ?console.log("更新了")
?? ?}
})

在這里我們沒有傳第二個參數(shù),也就是說他默認監(jiān)聽所有狀態(tài),只要有狀態(tài)發(fā)生改變,他就會執(zhí)行,但又有一個問題,他初始化的時候也會執(zhí)行,為了解決這樣的問題我們采用了useRef作為標記,初始化的時候flag.current肯定為false,所以我們將它設(shè)置成true,所以他就不會初始化執(zhí)行了。

看到這里我想有一些小伙伴可能有這樣的疑問,就是為什么用useRef,定義一個全局變量不香嗎?是,如果你這個組件在一個頁面只用一次那就沒問題,但組件就是為了復(fù)用的,試想一下,在同一頁面中你使用了兩次這樣的組件,第一個組件就沒問題,但第二個組件就會初始化執(zhí)行,因為在全局變量中的flag已經(jīng)被第一個組件修改成了true,而useRef卻不會,他是屬于組件內(nèi)部的,不會受到干擾。 

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • react實現(xiàn)動態(tài)選擇框

    react實現(xiàn)動態(tài)選擇框

    這篇文章主要為大家詳細介紹了react實現(xiàn)動態(tài)選擇框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • React手寫tab切換問題

    React手寫tab切換問題

    今天介紹下React手寫tab切換問題,代碼部分包括父文件,子文件及子文件tab樣式,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • React + Threejs + Swiper 實現(xiàn)全景圖效果的完整代碼

    React + Threejs + Swiper 實現(xiàn)全景圖效果的完整代碼

    全景圖效果非常漂亮給人帶來極好的用戶體驗效果,那么基于前端開發(fā)如何實現(xiàn)這種效果呢,下面小編給大家?guī)砹薘eact + Threejs + Swiper 實現(xiàn)全景圖效果,感興趣的朋友一起看看吧
    2021-06-06
  • React Native實現(xiàn)簡單的登錄功能(推薦)

    React Native實現(xiàn)簡單的登錄功能(推薦)

    這篇文章主要介紹了React Native實現(xiàn)登錄功能的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • react開發(fā)教程之React 組件之間的通信方式

    react開發(fā)教程之React 組件之間的通信方式

    本篇文章主要介紹了react開發(fā)教程之React組件通信詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 基于React-Dropzone開發(fā)上傳組件功能(實例演示)

    基于React-Dropzone開發(fā)上傳組件功能(實例演示)

    這篇文章主要介紹了基于React-Dropzone開發(fā)上傳組件,主要講述的是在React-Flask框架上開發(fā)上傳組件的技巧,需要的朋友可以參考下
    2021-08-08
  • react lazyLoad加載使用詳解

    react lazyLoad加載使用詳解

    lazy是React提供的懶(動態(tài))加載組件的方法,React.lazy(),路由組件代碼會被分開打包,能減少打包體積、延遲加載首屏不需要渲染的組件,依賴內(nèi)置組件Suspense標簽的fallback屬性,給lazy加上loading指示器組件,Suspense目前只和lazy配合實現(xiàn)組件等待加載指示器的功能
    2023-03-03
  • 解決React初始化加載組件會渲染兩次的問題

    解決React初始化加載組件會渲染兩次的問題

    這篇文章主要介紹了解決React初始化加載組件會渲染兩次的問題,文中有出現(xiàn)這種現(xiàn)象的原因及解決方法,感興趣的同學(xué)跟著小編一起來看看吧
    2023-08-08
  • React+Spring實現(xiàn)跨域問題的完美解決方法

    React+Spring實現(xiàn)跨域問題的完美解決方法

    這篇文章主要介紹了React+Spring實現(xiàn)跨域問題的完美解決方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • React中jquery引用的實現(xiàn)方法

    React中jquery引用的實現(xiàn)方法

    這篇文章主要介紹了React中jquery引用的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論

册亨县| 林芝县| 上林县| 临颍县| 城步| 唐河县| 大埔区| 北票市| 临清市| 穆棱市| 股票| 张家口市| 万源市| 临沂市| 二连浩特市| 阳朔县| 德清县| 千阳县| 灵宝市| 化德县| 德安县| 玛多县| 赫章县| 石泉县| 宁德市| 常德市| 华蓥市| 墨竹工卡县| 屏南县| 防城港市| 昌平区| 邮箱| 永年县| 土默特右旗| 长岛县| 元江| 唐山市| 崇文区| 兴仁县| 九龙县| 资溪县|