欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

正文

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

useMemo返回一個(gè)memoized的值

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

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

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

    export default memo(Mycomponent)

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

memo使用

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

useMemo使用

   const sum = ()=>{
      return a+b
   }
   const result = useMemo(()=>{sum()},[a,b])
   // 只有在a或者b的值變化時(shí)才會(huì)觸發(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}>計(jì)數(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,則點(diǎn)擊父組件計(jì)數(shù)的同時(shí),子組件會(huì)console進(jìn)行渲染,
    // 因?yàn)楦耤ount時(shí)父組件會(huì)重新渲染,導(dǎo)致重新生成了一個(gè)changeName函數(shù),
    // 所以子組件的props變了,導(dǎo)致子組件會(huì)重新渲染
    // 而對(duì)changeName函數(shù)用useCallback進(jìn)行包裹,則對(duì)函數(shù)進(jìn)行緩存不會(huì)重新生成

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

相關(guān)文章

  • React?中使用?Redux?的?4?種寫法小結(jié)

    React?中使用?Redux?的?4?種寫法小結(jié)

    這篇文章主要介紹了在?React?中使用?Redux?的?4?種寫法,Redux 一般來說并不是必須的,只有在項(xiàng)目比較復(fù)雜的時(shí)候,比如多個(gè)分散在不同地方的組件使用同一個(gè)狀態(tài),本文就React使用?Redux的相關(guān)知識(shí)給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-06-06
  • react+ant.d添加全局loading方式

    react+ant.d添加全局loading方式

    這篇文章主要介紹了react+ant.d添加全局loading方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳解超簡(jiǎn)單的react服務(wù)器渲染(ssr)入坑指南

    詳解超簡(jiǎn)單的react服務(wù)器渲染(ssr)入坑指南

    這篇文章主要介紹了詳解超簡(jiǎn)單的react服務(wù)器渲染(ssr)入坑指南,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • 在?React?Native?中使用?CSS?Modules的配置方法

    在?React?Native?中使用?CSS?Modules的配置方法

    有些前端工程師希望也能像開發(fā) web 應(yīng)用那樣,使用 CSS Modules 來開發(fā) React Native,本文將介紹如何在 React Native 中使用 CSS Modules,需要的朋友可以參考下
    2022-08-08
  • React實(shí)現(xiàn)父子組件有效通信的多種方式

    React實(shí)現(xiàn)父子組件有效通信的多種方式

    在React中,父子組件之間的通信是一個(gè)重要的概念,它直接影響到數(shù)據(jù)傳遞和組件的交互,了解如何實(shí)現(xiàn)父子組件之間的有效通信,可以幫助你構(gòu)建更高效、可維護(hù)的應(yīng)用,本文將詳細(xì)探討父子組件通信的多種方式,包括屬性傳遞、回調(diào)函數(shù)、上下文API、以及更高級(jí)的狀態(tài)管理解決方案,
    2025-07-07
  • React useMemo和useCallback的使用場(chǎng)景

    React useMemo和useCallback的使用場(chǎng)景

    這篇文章主要介紹了React useMemo和useCallback的使用場(chǎng)景,幫助大家更好的理解和學(xué)習(xí)使用React框架,感興趣的朋友可以了解下
    2021-04-04
  • 為什么說form元素是React的未來

    為什么說form元素是React的未來

    這篇文章主要介紹了為什么說form元素是React的未來,本文會(huì)帶你聊聊React圍繞form的布局與發(fā)展,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • React之虛擬DOM的實(shí)現(xiàn)原理

    React之虛擬DOM的實(shí)現(xiàn)原理

    這篇文章主要介紹了React之虛擬DOM的實(shí)現(xiàn)原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • React渲染的優(yōu)化方案

    React渲染的優(yōu)化方案

    react的渲染機(jī)制是非常獨(dú)特的,有別于 Vue 框架的渲染次數(shù)的優(yōu)化計(jì)算,React 很久以來就有PureComponent、shouldUpdate,本文小編給大家介紹了React渲染的優(yōu)化方案,需要的朋友可以參考下
    2024-08-08
  • 教你在react中創(chuàng)建自定義hooks

    教你在react中創(chuàng)建自定義hooks

    簡(jiǎn)單來說就是使用自定義hook可以將某些組件邏輯提取到可重用的函數(shù)中。 自定義hook是一個(gè)從use開始的調(diào)用其他hook的Javascript函數(shù),下面看下react中創(chuàng)建自定義hooks的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-11-11

最新評(píng)論