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

react中useEffect函數(shù)的詳細(xì)用法(最新推薦)

 更新時間:2024年06月22日 16:20:00   作者:編程磚家  
useEffect是React中的一個Hook,用于在函數(shù)組件中處理副作用(如數(shù)據(jù)獲取、訂閱、手動更改 DOM 等),useEffect屬于組件的生命周期方法,下面通過本文給大家分享react中useEffect函數(shù)的詳細(xì)用法,感興趣的朋友跟隨小編一起看看吧

1、函數(shù)介紹

useEffect 是 React 中的一個 Hook,用于在函數(shù)組件中處理副作用(如數(shù)據(jù)獲取、訂閱、手動更改 DOM 等)。與類組件中的生命周期方法(如 componentDidMount、componentDidUpdatecomponentWillUnmount)類似,useEffect 讓你在函數(shù)組件中完成相同的操作。( from chatGPT)

        簡單來說,useEffect屬于組件的生命周期方法。在組件不同的生命周期,我們可以通過useEffect函數(shù)來控制執(zhí)行過程。 那么什么是組件的生命周期呢?

2.組件的生命周期

        在 React 中,組件的生命周期分為三個主要階段:掛載(Mounting)、更新(Updating)和卸載(Unmounting)。掛載和渲染是關(guān)鍵的生命周期階段,理解它們對于有效地使用 React 至關(guān)重要。

2.1 掛載(Mounting)

載是指組件第一次被插入到 DOM 中的過程。掛載階段包括以下步驟:

  • 構(gòu)造函數(shù)(Constructor):組件的構(gòu)造函數(shù)被調(diào)用。如果你在類組件中定義了構(gòu)造函數(shù),那么它會在組件實(shí)例化時首先被調(diào)用。
  • getDerivedStateFromProps(靜態(tài)方法):在初始化和更新期間調(diào)用,允許組件基于輸入的 props 來更新狀態(tài)。它是一個靜態(tài)方法,不能訪問組件實(shí)例。
  • render:渲染方法被調(diào)用。它返回要渲染的元素(通常是 JSX)。
  • componentDidMount:組件已經(jīng)被掛載到 DOM 中,此時可以執(zhí)行一些副作用操作,比如數(shù)據(jù)獲取、訂閱事件等。

2.2 渲染和更新

渲染(Rendering)

渲染是指組件根據(jù)其當(dāng)前狀態(tài)和屬性生成要顯示的元素。每次組件的狀態(tài)或?qū)傩园l(fā)生變化時,渲染過程都會被觸發(fā)。渲染階段包括:

  • render 方法(類組件):被調(diào)用以生成虛擬 DOM 結(jié)構(gòu)。
  • 函數(shù)組件本身:被調(diào)用以生成虛擬 DOM 結(jié)構(gòu)。

在每次狀態(tài)或?qū)傩宰兓瘯r,組件會重新渲染。React 將對比虛擬 DOM(使用 Diff 算法)并更新實(shí)際 DOM 以反映變化。

更新(Updating)

更新是指組件的狀態(tài)或?qū)傩园l(fā)生變化并重新渲染的過程。更新階段包括以下步驟:

  • getDerivedStateFromProps(靜態(tài)方法):同掛載階段一樣,在屬性變化時調(diào)用。
  • shouldComponentUpdate:決定組件是否應(yīng)該重新渲染。返回 true 表示重新渲染,返回 false 表示跳過更新。
  • render:渲染方法被調(diào)用以生成新的虛擬 DOM 結(jié)構(gòu)。
  • getSnapshotBeforeUpdate:在 DOM 更新之前被調(diào)用,返回的值將作為 componentDidUpdate 的第三個參數(shù)。
  • componentDidUpdate:組件更新并重新渲染到 DOM 之后調(diào)用,可執(zhí)行副作用操作。

2.3 卸載(Unmounting)

卸載是指組件被移出 DOM 的過程。卸載階段只包括一個方法:

componentWillUnmount:組件即將卸載時調(diào)用,可以在這里執(zhí)行清理操作,例如取消訂閱、清除定時器等。

2.4 總結(jié)

  • 掛載:組件第一次被插入到 DOM 中時執(zhí)行。類組件中使用 componentDidMount,函數(shù)組件中使用 useEffect(空依賴數(shù)組)。
  • 渲染:每次組件的狀態(tài)或?qū)傩宰兓瘯r,都會重新生成虛擬 DOM 并更新實(shí)際 DOM。
  • 更新:狀態(tài)或?qū)傩宰兓鸾M件重新渲染。類組件中使用 componentDidUpdate,函數(shù)組件中使用 useEffect(依賴數(shù)組)。
  • 卸載:組件被移出 DOM 時執(zhí)行。類組件中使用 componentWillUnmount,函數(shù)組件中通過 useEffect 的清理函數(shù)處理。

3、函數(shù)的基本用法

        有了對組件生命周期的認(rèn)識,那么就可以利用useEffect函數(shù)根據(jù)組件不同的生命周期階段來執(zhí)行不同的方法。比如:

  • 有的方法只希望在執(zhí)行一次,即在組件掛載的時候執(zhí)行一次就夠了,后面也不需要再次執(zhí)行
  • 有的方法希望在組件每次渲染(元素有更新)的時候都執(zhí)行
  • 有的方法希望在某個依賴的變量發(fā)生變化時才會執(zhí)行
  • 有的方法希望在組件卸載(頁面退出的)的時候執(zhí)行

上面的執(zhí)行過程都都可以通過useEffect方法做到。

3.1 用法示例

import React, { useState, useEffect } from 'react';
function ExampleComponent() {
  const [count, setCount] = useState(0);
  useEffect(() => {
    // 這里的代碼相當(dāng)于 componentDidMount 和 componentDidUpdate
    document.title = `You clicked ${count} times`;
    // 如果需要清理,可以返回一個函數(shù)
    return () => {
      // 這里的代碼相當(dāng)于 componentWillUnmount
      console.log('Cleaning up...');
    };
  }, [count]); // 依賴數(shù)組
  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>Click me</button>
    </div>
  );
}
export default ExampleComponent;

3.2 用法說明

副作用的執(zhí)行

  • useEffect 的第一個參數(shù)是一個函數(shù),它在組件渲染后執(zhí)行。可以在這個函數(shù)內(nèi)進(jìn)行副作用操作。
  • 如果需要清理副作用,可以在這個函數(shù)中返回一個函數(shù),這個返回的函數(shù)會在組件卸載或副作用重新執(zhí)行前調(diào)用。

依賴數(shù)組

  • useEffect 的第二個參數(shù)是一個依賴數(shù)組(可以依賴多個變量),表示副作用依賴的變量。當(dāng)依賴數(shù)組中的任何一個變量發(fā)生變化時,副作用函數(shù)會重新執(zhí)行。
  • 如果依賴數(shù)組為空([]),副作用函數(shù)只會在組件掛載和卸載時執(zhí)行一次,類似于 componentDidMountcomponentWillUnmount。
  • 如果不傳依賴數(shù)組,副作用函數(shù)會在每次組件渲染后執(zhí)行,類似于 componentDidUpdate。

3.3 使用規(guī)則

  • 在組件頂層調(diào)用:只能在 React 函數(shù)組件或自定義 Hook 的頂層調(diào)用 useEffect,不要在循環(huán)、條件或嵌套函數(shù)中調(diào)用。
  • 依賴數(shù)組:確保正確設(shè)置依賴數(shù)組,以避免不必要的副作用執(zhí)行或缺少必要的更新。

到此這篇關(guān)于react中useEffect函數(shù)的詳細(xì)用法的文章就介紹到這了,更多相關(guān)react useEffect函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React如何使用axios請求數(shù)據(jù)并把數(shù)據(jù)渲染到組件

    React如何使用axios請求數(shù)據(jù)并把數(shù)據(jù)渲染到組件

    這篇文章主要介紹了React如何使用axios請求數(shù)據(jù)并把數(shù)據(jù)渲染到組件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React18新增特性released的使用

    React18新增特性released的使用

    本文主要介紹了React18新增特性released的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • React之echarts-for-react源碼解讀

    React之echarts-for-react源碼解讀

    這篇文章主要介紹了React之echarts-for-react源碼解讀,echarts-for-react的源碼非常精簡,本文將針對主要邏輯分析介紹,需要的朋友可以參考下
    2022-10-10
  • 詳解React中如何拆分組件

    詳解React中如何拆分組件

    這篇文章主要為大家詳細(xì)介紹了React中拆分組件的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們掌握React有一定的幫助,需要的小伙伴可以參考一下
    2023-12-12
  • JavaScript中React面向組件編程(上)

    JavaScript中React面向組件編程(上)

    本文主要介紹了React組件中默認(rèn)封裝了很多屬性,有的是提供給開發(fā)者操作的,其中有三個屬性非常重要:state、props、refs。感興趣的小伙伴可以參考閱讀
    2023-03-03
  • react+react-beautiful-dnd實(shí)現(xiàn)代辦事項(xiàng)思路詳解

    react+react-beautiful-dnd實(shí)現(xiàn)代辦事項(xiàng)思路詳解

    這篇文章主要介紹了react+react-beautiful-dnd實(shí)現(xiàn)代辦事項(xiàng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • React Context詳解使用過程

    React Context詳解使用過程

    在Reactor中提供了Context來替代ThreadLocal,可以實(shí)現(xiàn)一個跨線程的共享變量的透明方式。本文主要為大家介紹了Context的用法的用法,感興趣的可以了解一下
    2023-03-03
  • React語法中設(shè)置TS校驗(yàn)規(guī)則的步驟詳解

    React語法中設(shè)置TS校驗(yàn)規(guī)則的步驟詳解

    這篇文章主要給大家介紹了React語法中如何設(shè)置TS校驗(yàn)規(guī)則,文中有詳細(xì)的代碼示例供大家參考,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-10-10
  • 關(guān)于React動態(tài)修改元素樣式的三種方式

    關(guān)于React動態(tài)修改元素樣式的三種方式

    這篇文章主要介紹了關(guān)于React動態(tài)修改元素樣式的三種方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React中使用Axios發(fā)起POST請求提交文件方式

    React中使用Axios發(fā)起POST請求提交文件方式

    這篇文章主要介紹了React中使用Axios發(fā)起POST請求提交文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評論