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

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

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

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

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

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

組件渲染階段:

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

DOM 更新階段:

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

提交階段:

  • 在 DOM 更新完成后,React 會(huì)執(zhí)行 useEffect 中的副作用函數(shù)。
  • 如果 useEffect 有清理函數(shù)(返回的函數(shù)),它會(huì)在組件卸載或依賴項(xiàng)變化時(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>
  );
}

控制臺(tái)輸出順序

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

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

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

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

總結(jié)

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

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

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

相關(guān)文章

  • react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例

    react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例

    本文主要介紹了react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Javascript之提高React性能的技巧

    Javascript之提高React性能的技巧

    一些剛開(kāi)始學(xué)習(xí) React,或者從其他框架轉(zhuǎn)入 React 的開(kāi)發(fā)者,一開(kāi)始可能不會(huì)太關(guān)注性能。因?yàn)樾枰恍r(shí)間來(lái)發(fā)現(xiàn)新學(xué)習(xí)的框架的性能缺點(diǎn)。這篇文章主要介紹提高React性能的技巧,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • React路由動(dòng)畫切換實(shí)現(xiàn)過(guò)程詳解

    React路由動(dòng)畫切換實(shí)現(xiàn)過(guò)程詳解

    這篇文章主要介紹了react-router 路由切換動(dòng)畫的實(shí)現(xiàn)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2022-12-12
  • react中的forwardRef 和memo的區(qū)別解析

    react中的forwardRef 和memo的區(qū)別解析

    forwardRef和memo是React中用于性能優(yōu)化和組件復(fù)用的兩個(gè)高階函數(shù),本文給大家介紹react中的forwardRef 和memo的區(qū)別及適用場(chǎng)景,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • useEffect支持async及await使用方式

    useEffect支持async及await使用方式

    這篇文章主要為大家介紹了useEffect支持async及await的使用方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • ChatGLM?集成LangChain工具詳解

    ChatGLM?集成LangChain工具詳解

    這篇文章主要為大家介紹了Svelte和React框架使用比較,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • JavaScript中的useRef 和 useState介紹

    JavaScript中的useRef 和 useState介紹

    這篇文章主要給大家分享的是 JavaScript中的useRef 和 useState介紹,下列文章,我們將學(xué)習(xí) useRef 和 useState hook是什么,它們的區(qū)別以及何時(shí)使用哪個(gè)。 這篇文章中的代碼示例將僅涉及功能組件,但是大多數(shù)差異和用途涵蓋了類和功能組件,需要的朋友可以參考一下
    2021-11-11
  • 十分鐘帶你快速了解React16新特性

    十分鐘帶你快速了解React16新特性

    這篇文章主要介紹了十分鐘帶你快速了解React16新特性,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • ahooks控制時(shí)機(jī)的hook實(shí)現(xiàn)方法

    ahooks控制時(shí)機(jī)的hook實(shí)現(xiàn)方法

    這篇文章主要為大家介紹了ahooks控制時(shí)機(jī)的hook實(shí)現(xiàn)方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • React19 新增Hooks中useOptimistic的使用

    React19 新增Hooks中useOptimistic的使用

    useOptimistic是React提供的一個(gè)Hooks,用于實(shí)現(xiàn)樂(lè)觀更新UI的效果,適用于評(píng)論發(fā)送等需要即時(shí)反饋的場(chǎng)景,下面就來(lái)詳細(xì)的介紹一下
    2026-05-05

最新評(píng)論

金坛市| 翁牛特旗| 乌鲁木齐市| 大田县| 西青区| 收藏| 厦门市| 留坝县| 台北县| 石渠县| 奎屯市| 仙桃市| 东港市| 湖州市| 宜君县| 铁岭市| 周宁县| 邹城市| 石河子市| 三穗县| 宁陕县| 教育| 阆中市| 盐池县| 满城县| 东辽县| 阿拉善盟| 深水埗区| 旅游| 元江| 横山县| 莱西市| 玛多县| 名山县| 诏安县| 时尚| 阳高县| 格尔木市| 阳江市| 福清市| 阳新县|