欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

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

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

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

使用場(chǎng)景:事件綁定、發(fā)起ajax請(qǐng)求

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

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

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

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

使用場(chǎng)景:事件綁定、發(fā)起ajax請(qǐng)求

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

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

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

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

使用場(chǎng)景:組件銷毀時(shí),清除遺留的事件綁定和定時(shí)器.

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

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

這里就得用到一個(gè)hooks來模擬鉤子函數(shù),這個(gè)hooks就是useEffect,這個(gè)useEffect可以模擬三個(gè)鉤子函數(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ù)")
?? ?}
},[])//第二個(gè)參數(shù)一定是一個(gè)空數(shù)組,因?yàn)槿绻粚憰?huì)默認(rèn)監(jiān)聽所有狀態(tài),這樣寫就不會(huì)監(jiān)聽任何狀態(tài),只在初始化時(shí)執(zhí)行一次。

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

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

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

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

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

相關(guān)文章

  • React服務(wù)端渲染原理解析與實(shí)踐

    React服務(wù)端渲染原理解析與實(shí)踐

    這篇文章主要介紹了React服務(wù)端渲染原理解析與實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • React RenderProps模式超詳細(xì)講解

    React RenderProps模式超詳細(xì)講解

    render props是指一種在 React 組件之間使用一個(gè)值為函數(shù)的 prop 共享代碼的技術(shù)。簡(jiǎn)單來說,給一個(gè)組件傳入一個(gè)prop,這個(gè)props是一個(gè)函數(shù),函數(shù)的作用是用來告訴這個(gè)組件需要渲染什么內(nèi)容,那么這個(gè)prop就成為render prop
    2022-11-11
  • React Native 混合開發(fā)多入口加載方式詳解

    React Native 混合開發(fā)多入口加載方式詳解

    這篇文章主要介紹了React Native 混合開發(fā)多入口加載方式詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • react組件從搭建腳手架到在npm發(fā)布的步驟實(shí)現(xiàn)

    react組件從搭建腳手架到在npm發(fā)布的步驟實(shí)現(xiàn)

    這篇文章主要介紹了react組件從搭建腳手架到在npm發(fā)布的步驟實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • React項(xiàng)目build打包頁面空白的解決方案

    React項(xiàng)目build打包頁面空白的解決方案

    React項(xiàng)目執(zhí)行build命令后,在本地服務(wù)器打開頁面是空白的,本文主要介紹了React項(xiàng)目build打包頁面空白的解決方案,感興趣的可以了解一下
    2023-08-08
  • React中Redux核心原理深入分析

    React中Redux核心原理深入分析

    這篇文章主要介紹了如何在React中Redux原理,目前redux在react中使用是最多的,所以我們需要將之前編寫的redux代碼,融入到react當(dāng)中去,本文給大家詳細(xì)講解,需要的朋友可以參考下
    2022-11-11
  • React文字展開收起組件的實(shí)現(xiàn)示例

    React文字展開收起組件的實(shí)現(xiàn)示例

    本文主要介紹了React文字展開收起組件的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • React利用插件和不用插件實(shí)現(xiàn)雙向綁定的方法詳解

    React利用插件和不用插件實(shí)現(xiàn)雙向綁定的方法詳解

    我們知道在 angular 中數(shù)據(jù)時(shí)雙向綁定的;而在 react 中,數(shù)據(jù)是向一個(gè)方向傳遞:從擁有者到子節(jié)點(diǎn)。也就是我們說的單向數(shù)據(jù)綁定。那如何實(shí)現(xiàn)雙向綁定呢?下面這篇文章主要給大家介紹了關(guān)于React利用插件和不用插件實(shí)現(xiàn)雙向綁定的方法,需要的朋友可以參考下。
    2017-07-07
  • React.js組件實(shí)現(xiàn)拖拽排序組件功能過程解析

    React.js組件實(shí)現(xiàn)拖拽排序組件功能過程解析

    這篇文章主要介紹了React.js組件實(shí)現(xiàn)拖拽排序組件功能過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • React中的CSS局部引入過程

    React中的CSS局部引入過程

    這篇文章主要介紹了React中的CSS局部引入過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論