React中useCallback useMemo到底該怎么用
useCallback記憶函數(shù)
前言
使用緣由:
防止因為組件重新渲染,導致方法被重新創(chuàng)建,起到緩存作用
類似監(jiān)聽器…監(jiān)聽更新然后執(zhí)行操作
介紹
防止因為組件重新渲染,導致方法被重新創(chuàng)建,起到緩存作用
使用
/** * useCallback記憶函數(shù) */ import React, { useState, useCallback, useEffect } from 'react'; const set = new Set(); export default function Parent() { const [count, setCount] = useState(1); const callback = useCallback(() => { console.log(count); return count }, [count]); //count更新時執(zhí)行 return ( <div> <h4>parent count:{count}</h4> <div> <button onClick={() => setCount(count + 1)}>+</button> </div> <Child callback={callback} /> </div> ) } const Child = ({callback}) =>{ const [count,setCount] = useState(0); useEffect(()=>{ setCount(callback()) },[callback]) //當callback更新時執(zhí)行callback函數(shù),得到parent組件最新的count return <child> count:{count} </child> }
useMemo記憶組件
兩者區(qū)別
與useCallback的區(qū)別
- useCallback不會執(zhí)行第一個參數(shù)函數(shù),而是將它返回給你,而useMemo會執(zhí)行第一個函數(shù)并且將函數(shù)執(zhí)行結(jié)果返回給你
- 類似監(jiān)聽器…監(jiān)聽更新然后執(zhí)行操作
使用
/** * useMemo記憶組件 */ import React, { useState, useMemo } from 'react'; export default function Memos() { const [count, setCount] = useState(1); const memo = useMemo(() => { console.log("count更新了"+count); return count }, [count]); //count更新時執(zhí)行 return <div> <h4>{count}</h4> <div> <button onClick={() => setCount(count + 1)}>+</button> </div> </div>; }
到此這篇關(guān)于React中useCallback useMemo到底該怎么用的文章就介紹到這了,更多相關(guān)React useCallback與useMemo內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用useImperativeHandle時父組件第一次沒拿到子組件的問題
這篇文章主要介紹了使用useImperativeHandle時父組件第一次沒拿到子組件的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08Zustand介紹與使用 React狀態(tài)管理工具的解決方案
本文主要介紹了Zustand,一種基于React的狀態(tài)管理庫,Zustand以簡潔易用、靈活性高及最小化原則等特點脫穎而出,旨在提供簡單而強大的狀態(tài)管理功能2024-10-10React tabIndex使非表單元素支持focus和blur事件
這篇文章主要為大家介紹了React使用tabIndex使非表單元素支持focus和blur事件實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11