亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

React中的useMemo 和 useEffect 執(zhí)行順序

 更新時間:2025年01月10日 11:02:49   作者:灰色人生qwer  
在 React 組件的渲染過程中,useMemo 和 useEffect 的執(zhí)行順序是不同的,本文給大家介紹React中的useMemo 和 useEffect 哪個先執(zhí)行,感興趣的朋友一起看看吧

在 React 組件的渲染過程中,useMemo 和 useEffect 的執(zhí)行順序是不同的。具體來說:

  • useMemo 先執(zhí)行:useMemo 是在 渲染階段 執(zhí)行的,它的作用是緩存計算結(jié)果,確保在渲染過程中可以直接使用緩存的值。
  • useEffect 后執(zhí)行:useEffect 是在 提交階段 執(zhí)行的,它的作用是處理副作用(如數(shù)據(jù)獲取、DOM 操作等),并且是在 DOM 更新之后才運行。

詳細(xì)執(zhí)行順序

組件渲染階段:

  • React 調(diào)用組件的渲染方法(函數(shù)組件的函數(shù)體或類組件的 render 方法)。
  • 在渲染過程中,useMemo 會被執(zhí)行,計算并緩存值。
  • 如果依賴項沒有變化,useMemo 會直接返回緩存的值,避免重復(fù)計算。

DOM 更新階段:

  • React 將組件的渲染結(jié)果應(yīng)用到 DOM 上,更新 UI。

提交階段:

  • 在 DOM 更新完成后,React 會執(zhí)行 useEffect 中的副作用函數(shù)。
  • 如果 useEffect 有清理函數(shù)(返回的函數(shù)),它會在組件卸載或依賴項變化時執(zhí)行。

示例代碼

import React, { useMemo, useEffect, useState } from 'react';
function MyComponent({ a, b }) {
  // useEffect 寫在 useMemo 上面
  useEffect(() => {
    console.log('useEffect: Side effect after DOM update');
    return () => {
      console.log('useEffect: Cleanup');
    };
  }, [a, b]);
  // useMemo 寫在 useEffect 下面
  const memoizedValue = useMemo(() => {
    console.log('useMemo: Calculating expensive value...');
    return a + b;
  }, [a, b]);
  console.log('Render: Component rendering...');
  return (
    <div>
      <p>Memoized Value: {memoizedValue}</p>
    </div>
  );
}
function App() {
  const [a, setA] = useState(1);
  const [b, setB] = useState(2);
  return (
    <div>
      <MyComponent a={a} b= />
      <button onClick={() => setA(a + 1)}>Increment A</button>
      <button onClick={() => setB(b + 1)}>Increment B</button>
    </div>
  );
}

控制臺輸出順序

當(dāng)組件首次渲染時:

Render: Component rendering...
useMemo: Calculating expensive value...
useEffect: Side effect after DOM update

當(dāng) a 或 b 變化時:

Render: Component rendering...
useMemo: Calculating expensive value...
useEffect: Cleanup
useEffect: Side effect after DOM update

總結(jié)

  • useMemo 在渲染階段執(zhí)行:無論它寫在 useEffect 上面還是下面,它都會在組件渲染時執(zhí)行。
  • useEffect 在提交階段執(zhí)行:它總是在 DOM 更新后執(zhí)行,與代碼書寫順序無關(guān)。
  • React 的執(zhí)行順序是固定的:useMemo 先執(zhí)行,useEffect 后執(zhí)行。

如果你需要在渲染階段避免昂貴的計算,使用 useMemo;如果你需要在 DOM 更新后執(zhí)行某些操作(如數(shù)據(jù)獲取或訂閱),使用 useEffect。

到此這篇關(guān)于React中的useMemo 和 useEffect 執(zhí)行順序的文章就介紹到這了,更多相關(guān)React useMemo 和 useEffect 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在React中判斷點擊元素所屬組件的方法詳解

    在React中判斷點擊元素所屬組件的方法詳解

    在 React 開發(fā)中,經(jīng)常需要處理點擊事件并判斷點擊的元素屬于哪個組件,這對于實現(xiàn)復(fù)雜的交互邏輯、狀態(tài)管理和組件通信至關(guān)重要,本文將深入探討多種判斷方法,并提供詳細(xì)的代碼示例,需要的朋友可以參考下
    2025-09-09
  • react中如何使用局部樣式

    react中如何使用局部樣式

    這篇文章主要介紹了react中如何使用局部樣式問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • React Hooks獲取數(shù)據(jù)實現(xiàn)方法介紹

    React Hooks獲取數(shù)據(jù)實現(xiàn)方法介紹

    這篇文章主要介紹了react hooks獲取數(shù)據(jù),文中給大家介紹了useState dispatch函數(shù)如何與其使用的Function Component進(jìn)行綁定,實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • React項目配置axios和反向代理和process.env環(huán)境配置等問題

    React項目配置axios和反向代理和process.env環(huán)境配置等問題

    這篇文章主要介紹了React項目配置axios和反向代理和process.env環(huán)境配置等問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 淺談React Event實現(xiàn)原理

    淺談React Event實現(xiàn)原理

    這篇文章主要介紹了淺談React Event實現(xiàn)原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • react組件中debounce防抖功能失效問題解決辦法

    react組件中debounce防抖功能失效問題解決辦法

    在React組件中,如果使用useState管理searchKey,每次輸入變化都會導(dǎo)致組件重新渲染,從而生成新的debounce函數(shù),導(dǎo)致防抖功能失效,解決方法是使用useRef定義searchKey為非響應(yīng)式數(shù)據(jù),從而維持debounce函數(shù)的穩(wěn)定,確保防抖功能有效,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • 解決React報錯React?Hook?useEffect?has?a?missing?dependency

    解決React報錯React?Hook?useEffect?has?a?missing?dependency

    這篇文章主要為大家介紹了解決React報錯React?Hook?useEffect?has?a?missing?dependency,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 用React-Native+Mobx做一個迷你水果商城APP(附源碼)

    用React-Native+Mobx做一個迷你水果商城APP(附源碼)

    這篇文章主要介紹了用React-Native+Mobx做一個迷你水果商城APP,功能需要的朋友可以參考下
    2017-12-12
  • 使用hooks寫React組件需要注意的5個地方

    使用hooks寫React組件需要注意的5個地方

    這篇文章主要介紹了使用hooks寫React組件需要注意的5個地方,幫助大家更好的理解和學(xué)習(xí)使用React組件,感興趣的朋友可以了解下
    2021-04-04
  • 基于webpack4搭建的react項目框架的方法

    基于webpack4搭建的react項目框架的方法

    本篇文章主要介紹了基于webpack4搭建的react項目框架的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06

最新評論