亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

React中useMemo與useCallback的區別是什么

發布時間:2022-08-18 09:37:16 來源:億速云 閱讀:169 作者:iii 欄目:開發技術

這篇文章主要介紹“React中useMemo與useCallback的區別是什么”,在日常操作中,相信很多人在React中useMemo與useCallback的區別是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”React中useMemo與useCallback的區別是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

useMemo

把“創建”函數和依賴項數組作為參數傳?入useMemo,它僅會在某個依賴項改變時才重新計算memoized 值。這種優化有助于避免在每次渲染時都進?行行?高開銷的計算。

importReact, { useState, useMemo } from"react";
export default functionUseMemoPage(props) {
    const [count, setCount] =useState(0);
    constexpensive=useMemo(() => {
        console.log("compute");
        let sum=0;
        for (leti=0; i<count; i++) {
            sum+=i;
        }
        return sum;//只有count變化,這?里里才重新執?行行
      }, [count]);
    const [value, setValue] =useState("");
    return (<div><h4>UseMemoPage</h4>
    <p>expensive:{expensive}</p><p>{count}</p>            
  <button onClick={() =>setCount(count+1)}>add</button>
  <input value={value} onChange={event=>setValue(event.target.value)} /></div>  );
}

useCallback

把內聯回調函數及依賴項數組作為參數傳?入useCallback,它將返回該回調函數的 memoized 版本,該回調函數僅在某個依賴項改變時才會更更新。當你把回調函數傳遞給經過優化的并使?用引?用相等性去避免?非必要渲染(例例如shouldComponentUpdate)的?子組件時,它將?非常有?用

importReact, { useState, useCallback, PureComponent } from"react";
export default function UseCallbackPage(props) {
    const [count, setCount] =useState(0);
    const addClick=useCallback(() => {
    let sum=0;
    for (leti=0; i<count; i++) {
        sum+=i;    
    }
    return sum;  
    }, [count]);
    const [value, setValue] =useState("");
    return (
    <div><h4>UseCallbackPage</h4>
  <p>{count}</p>            
  <buttononClick={() =>setCount(count+1)}>add</button>
  <inputvalue={value} onChange={event=>setValue(event.target.value)} />
  <ChildaddClick={addClick} /></div>  );
}
  class ChildextendsPureComponent {
    render() {
      console.log("child render");
      const { addClick } =this.props;

      return (
        <div><h4>Child</h4>
        <buttononClick={() =>console.log(addClick())}>add</button></div>   
     )
  }
}

useCallback(fn, deps)相當于useMemo(() => fn, deps)。

注意依賴項數組不不會作為參數傳給“創建”函數。雖然從概念上來說它表現為:所有“創建”函數中引?用的值都應該出現在依賴項數組中。未來編譯器?會更更加智能,屆時?自動創建數組將成為可能。

補充介紹React的memo與useMemo及useCallback

React.memo

  • 概念解析

    • 將組件在相同的情況下的渲染結果,緩存渲染結果

    • 當組件傳入props相同的參數時,淺對比之后有之前的傳入項,則復用緩存最近一次結果

    • 數據對比,只做淺對比。如果需要控制對比過程,需要自己寫自定義比對函數。傳參數置第二個參數 -請注意不要與 shouldComponetUpdate 返回值混合

類組件通過比對數據,可以控制渲染的方式?

  • React.PureComponent

  • shouldComponentUpdate

hooks的useMemo

  • 概念解析

    • 函數組件的緩存渲染結果

    • 可以將當前的組件節點顆粒化

    • 通過第二個參數去判斷,是否更新useMemo的回調函數

    • 回調函數是一個必包,如果創建使用了 useState,會緩存 state 值,不會拿到實時更新的值

hooks的useCallback

  • 概念解析

    • 當父級組件傳遞給子級組件一個函數時,無狀態組件每次都會重新生成新的props函數,導致子組件刷新

    • 返回一個需要緩存的函數

    • 傳遞需要更新的依賴項,一般回調函數內部使用的數據,都需要添加在依賴項中

    • 避免父子之間,子級生成新的props函數,從而刷新子組件

    • 一般聯合useMemo一起使用

到此,關于“React中useMemo與useCallback的區別是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛川县| 牙克石市| 女性| 普兰县| 冷水江市| 邢台市| 石首市| 东丰县| 防城港市| 抚宁县| 和田县| 广水市| 五寨县| 舞阳县| 阿坝县| 新泰市| 淮阳县| 雷波县| 什邡市| 揭东县| 桂阳县| 石渠县| 天等县| 许昌市| 宣城市| 迁西县| 聂拉木县| 曲靖市| 偃师市| 西华县| 平遥县| 澄江县| 临沂市| 略阳县| 杭锦后旗| 丹寨县| 建平县| 沅江市| 墨江| 丰原市| 阿拉善左旗|