国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【React 】useLayoutEffect 和 useEffect的區(qū)別

這篇具有很好參考價值的文章主要介紹了【React 】useLayoutEffect 和 useEffect的區(qū)別。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

useLayoutEffectuseEffect是React中常用的兩個Hook,它們的主要區(qū)別在于觸發(fā)時機。

  1. useEffect會在渲染完成后異步執(zhí)行,不會阻塞瀏覽器的繪制操作。它適用于需要在組件渲染后執(zhí)行副作用的情況,例如數(shù)據(jù)的獲取、訂閱事件等。它不會阻止屏幕更新,因此可能會導(dǎo)致渲染的一次跳躍,用戶可能會在頁面渲染完成后才看到最終效果。

  2. useLayoutEffect的觸發(fā)時機稍早于useEffect,在瀏覽器執(zhí)行繪制之前同步執(zhí)行。它適用于需要在DOM更新之后同步執(zhí)行副作用的情況,例如獲取DOM元素的尺寸、位置等。由于它會在頁面渲染之前執(zhí)行,因此可以阻止屏幕更新,確保副作用的執(zhí)行不會引起渲染跳躍,提供更流暢的用戶體驗。

需要注意的是,由于useLayoutEffect會在DOM操作之后同步執(zhí)行,如果執(zhí)行的操作非常耗時,則可能導(dǎo)致頁面響應(yīng)變慢。在大多數(shù)情況下,使用useEffect即可滿足需求,只有在確實需要在DOM更新后立即執(zhí)行副作用時才考慮使用useLayoutEffect

應(yīng)用useLayoutEffect的場景,比如:文章來源地址http://www.zghlxwxcb.cn/news/detail-703384.html

React.useLayoutEffect(() => {
    // 環(huán)形圖自適應(yīng)寬度設(shè)置
    const resizePieWidth = () => {
      const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
      if (+width >= 992) {
        setPieWidth(165);
      } else if (+width > 1150) {
        setPieWidth(205);
      } else if (+width > 1250) {
        setPieWidth(235);
      } else if (+width > 1350 || +width < 992) {
        setPieWidth(260);
      }
    };
    // 初始時需要觸發(fā)resize,否則會有樣式兼容問題
    resizePieWidth();
    const onResize = debounce(() => {
      resizePieWidth();
    }, 50);
    window.addEventListener('resize', onResize);
    return () => {
      window.removeEventListener('resize', onResize);
    };
  });

到了這里,關(guān)于【React 】useLayoutEffect 和 useEffect的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【React】useEffect使用詳解

    如果你熟悉 React class 的生命周期函數(shù),你可以把 useEffect Hook 看做 componentDidMount,componentDidUpdate 和 componentWillUnmount 這三個函數(shù)的組合。 componentDidMount 組件掛載 componentDidUpdate 組件更新 componentWillUnmount 組件將要摧毀 使用方法 情況一: useEffect需要傳遞兩個參數(shù),第一個參數(shù)是

    2024年02月03日
    瀏覽(23)
  • react的嚴(yán)格模式 和 解決react useEffect執(zhí)行兩次

    react的嚴(yán)格模式 和 解決react useEffect執(zhí)行兩次

    這個問題,主要是剛接觸react的時候發(fā)的問題,當(dāng)時也沒總結(jié)?,F(xiàn)在回過頭來再總結(jié)一次?。?! 能發(fā)現(xiàn)這個問題的?????,一定是一名細(xì)心并且有一顆求知的??。 因為我當(dāng)時接觸React的時候就是這樣的想法。 為什么會觸發(fā)兩次?按照正常的聲明周期應(yīng)該執(zhí)行一次的?。。?/p>

    2024年02月04日
    瀏覽(19)
  • React的hooks---useEffect

    在函數(shù)組件主體內(nèi)(React 渲染階段)改變 DOM、添加訂閱、設(shè)置定時器、記錄日志以及執(zhí)行其他包含副作用的操作都是不被允許的,因為這可能會產(chǎn)生莫名其妙的 bug 并破壞 UI 的一致性 useEffect Hook 的使用則是用于完成此類副作用操作。 useEffect 接收一個包含命令式、且可能有副

    2024年02月15日
    瀏覽(25)
  • React Hooks 源碼解析:useEffect

    React Hooks 源碼解析:useEffect

    React Hooks 源碼解析(4):useEffect React 源碼版本: v16.11.0 源碼注釋筆記:airingursb/react 1.1 為什么要有 useEffect 我們在前文中說到 React Hooks 使得 Functional Component 擁有 Class Component 的特性,其主要動機包括: 在組件之間復(fù)用狀態(tài)邏輯很難 復(fù)雜組件變得難以理解 難以理解的 class 對

    2024年01月21日
    瀏覽(20)
  • 通過chatgpt 學(xué)習(xí)React的useEffect

    定義: useEffect 是 React 中的一個 Hook,它用于處理函數(shù)組件中的副作用操作。副作用操作可以包括數(shù)據(jù)獲取、訂閱事件、定時器等。 useEffect 接受兩個參數(shù):第一個參數(shù)是一個回調(diào)函數(shù),用于執(zhí)行副作用操作;第二個參數(shù)是一個數(shù)組,用于指定依賴項,只有當(dāng)依賴項發(fā)生變化時

    2024年02月10日
    瀏覽(18)
  • React - useEffect函數(shù)的理解和使用

    React - useEffect函數(shù)的理解和使用

    我們知道,react 的函數(shù)組件里面沒有生命周期的,也沒有 state,沒有 state 可以用 useState 來替代,那么生命周期呢? useEffect 是 react v16.8 新引入的特性。我們可以把 useEffect hook 看作是componentDidMount、componentDidUpdate、componentWillUnmounrt三個生命周期的組合??梢宰屇阍诤瘮?shù)式組件

    2024年02月13日
    瀏覽(52)
  • React18的useEffect會執(zhí)行兩次

    前段時間在本地啟了一個 React Demo 項目,在編碼的過程中遇到一個很奇怪的“Bug”。 其中簡化版的代碼如下所示。 我是萬萬沒想到,就這樣幾行簡單的代碼竟然會觸發(fā)一個“Bug”。 此“Bug”的表現(xiàn)為: 在 Chrome 控制臺里發(fā)現(xiàn) “Hello world!” 被打印了 “兩次”。 刷新之后依然

    2024年02月04日
    瀏覽(19)
  • React hooks之useEffect、useMemo優(yōu)化技巧

    useEffect使用JSON.stringfy進(jìn)行過濾,避免重復(fù)執(zhí)行 將數(shù)組直接放入依賴數(shù)組可能不會按預(yù)期工作,因為數(shù)組比較是基于引用而不是內(nèi)容。也就是說,如果數(shù)組引用沒有變,即使數(shù)組內(nèi)容發(fā)生了變化,副作用也不會重新運行。或者數(shù)組內(nèi)餓哦那個沒有改變但是引用卻發(fā)生變化時,

    2024年02月12日
    瀏覽(44)
  • 理解 React 中的 useEffect、useMemo 與 useCallback

    理解 React 中的 useEffect、useMemo 與 useCallback

    先理解 useEffect 有助于學(xué)習(xí) useMemo 和 useCallback。因為 useMemo 和 useCallback 的實現(xiàn)實際上都是基于 useEffect 的。 useEffect 是 React 中的一個很重要的 Hook,用于執(zhí)行副作用操作。什么是副作用?簡單來說,就是那些會改變函數(shù)外部變量或有外部可觀察影響的操作。useEffect 允許你在函

    2024年02月03日
    瀏覽(22)
  • JavaScript 框架比較:Angular、React、Vue.js

    在 Web 開發(fā)領(lǐng)域,JavaScript 提供大量技術(shù)??晒┻x擇。其中最典型的三套組合,分別是 MERN、MEAN 和 MEVN。這些首字母相同的選項各自代表不同的技術(shù)加工具組合。為了在這些技術(shù)棧中做出明智選擇,讓我們先從核心組件聊起,再對各自前端框架(React、Angular 和 Vue)進(jìn)行簡化比

    2024年01月20日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包