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

react組件memo useMemo useCallback使用區(qū)別示例

 更新時間:2022年07月25日 10:52:24   作者:SODA_HA  
這篇文章主要為大家介紹了react組件memo useMemo useCallback使用區(qū)別的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

memo用來優(yōu)化函數(shù)組件的重復渲染行為,針對的是一個組件

useMemo返回一個memoized的值

本質(zhì)都是用同樣的算法來判定依賴是否發(fā)生改變,繼而決定是否觸發(fā)memo或者useMemo中的邏輯,利用memo就可以避免不必要的重復計算,減少資源浪費

useCallback返回一個memoized的函數(shù)

useMemo和useCallback都接收兩個參數(shù),第一個參數(shù)為fn,第二個參數(shù)為[],數(shù)組中是變化依賴的參數(shù) memo則可以直接作用于組件,例如

    export default memo(Mycomponent)

useMemo和useEffect的執(zhí)行時機是不一致的:useEffect執(zhí)行的是副作用,所以一定是在渲染之后執(zhí)行的,useMemo是需要有返回值的,而返回值可以直接參與渲染的,所以useMemo是在渲染期間完成的

memo使用

    // 父組件
    const Parent = ()=>{
        const [count, setCount] = useState(1)
        const addCount = ()=>{
           setCount(count + 1)
        }
        return(
            <>
             <div onClick={addCount}>計數(shù): {count}</div>
             <Child />
            </>
        )
    }
    // 子組件
    const Child = memo(()=>{
        console.log('child start---')
        return(
            <div>child...</div>
        )
    })
    // 使用memo后,子組件的props或者state沒有變化時,將不會對子組件進行渲染

useMemo使用

   const sum = ()=>{
      return a+b
   }
   const result = useMemo(()=>{sum()},[a,b])
   // 只有在a或者b的值變化時才會觸發(fā)sum函數(shù)執(zhí)行

useCallback使用

    // 父組件,給子組件傳遞name和changeName方法
    const Parent = () => {
      const [count, setCount] = useState(1);
      const [name, setName] = useState("bbz");
      const addCount = () => {
        setCount(count + 1);
      };
      const changeName = useCallback((n) => {
        setName(n);
      }, []);
      return (
        <>
          <div onClick={addCount}>計數(shù): {count}</div>
          <Child name={name} changeName={changeName} />
        </>
      );
    };
    // 子組件
    const Child = ({ name, changeName }) => {
      console.log("child start---");
      return (
        <div
          onClick={() => {
            changeName("bobozai");
          }}
        >
          child comps: {name}
        </div>
      );
    };
    // 如果不使用useCallback,則點擊父組件計數(shù)的同時,子組件會console進行渲染,
    // 因為更新count時父組件會重新渲染,導致重新生成了一個changeName函數(shù),
    // 所以子組件的props變了,導致子組件會重新渲染
    // 而對changeName函數(shù)用useCallback進行包裹,則對函數(shù)進行緩存不會重新生成

以上就是react組件memo useMemo useCallback使用區(qū)別的詳細內(nèi)容,更多關于react組件memo useMemo useCallback的資料請關注腳本之家其它相關文章!

相關文章

  • ahooks?useInfiniteScroll源碼解析

    ahooks?useInfiniteScroll源碼解析

    這篇文章主要為大家介紹了ahooks?useInfiniteScroll源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • React?中使用?react-i18next?國際化的過程(react-i18next?的基本用法)

    React?中使用?react-i18next?國際化的過程(react-i18next?的基本用法)

    i18next?是一款強大的國際化框架,react-i18next?是基于?i18next?適用于?React?的框架,本文介紹了?react-i18next?的基本用法,如果更特殊的需求,文章開頭的官方地址可以找到答案
    2023-01-01
  • React四級菜單的實現(xiàn)

    React四級菜單的實現(xiàn)

    本文主要介紹了React四級菜單的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • React編程模型之Project Reactor實際應用實例

    React編程模型之Project Reactor實際應用實例

    這篇文章主要介紹了React編程模型之Project Reactor實際應用實例,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-05-05
  • React使用context進行跨級組件數(shù)據(jù)傳遞

    React使用context進行跨級組件數(shù)據(jù)傳遞

    這篇文章給大家介紹了React使用context進行跨級組件數(shù)據(jù)傳遞的方法步驟,文中通過代碼示例給大家介紹的非常詳細,對大家學習React context組件數(shù)據(jù)傳遞有一定的幫助,感興趣的小伙伴跟著小編一起來學習吧
    2024-01-01
  • react實現(xiàn)同頁面三級跳轉(zhuǎn)路由布局

    react實現(xiàn)同頁面三級跳轉(zhuǎn)路由布局

    這篇文章主要為大家詳細介紹了react實現(xiàn)同頁面三級跳轉(zhuǎn)路由布局,一個路由小案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • react中useState使用:如何實現(xiàn)在當前表格直接更改數(shù)據(jù)

    react中useState使用:如何實現(xiàn)在當前表格直接更改數(shù)據(jù)

    這篇文章主要介紹了react中useState的使用:如何實現(xiàn)在當前表格直接更改數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React實現(xiàn)todolist功能

    React實現(xiàn)todolist功能

    這篇文章主要介紹了React實現(xiàn)todolist功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • react分頁顯示數(shù)據(jù)的方法

    react分頁顯示數(shù)據(jù)的方法

    分頁在很多地方都可以用到,本文主要實現(xiàn)了react分頁顯示,主要使用三個組件,父組件listBox、列表組件List、按鈕組件PageButton,感興趣的可以了解一下
    2021-08-08
  • 詳解各版本React路由的跳轉(zhuǎn)的方法

    詳解各版本React路由的跳轉(zhuǎn)的方法

    這篇文章主要介紹了詳解各版本React路由的跳轉(zhuǎn)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05

最新評論

永安市| 门头沟区| 灵石县| 镇康县| 德惠市| 柞水县| 元氏县| 河东区| 邵东县| 洪洞县| 红桥区| 汕头市| 肃南| 利津县| 疏勒县| 神池县| 桐梓县| 望谟县| 阿荣旗| 诏安县| 色达县| 正安县| 平远县| 轮台县| 阿荣旗| 青州市| 长武县| 石狮市| 衡东县| 萍乡市| 天台县| 方山县| 双流县| 绥芬河市| 奉节县| 金平| 正镶白旗| 得荣县| 静安区| 南平市| 永胜县|