亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解析React中useMemo與useCallback的區(qū)別

 更新時(shí)間:2022年08月17日 17:07:07   作者:小提莫~  
這篇文章主要介紹了React中useMemo與useCallback的區(qū)別,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

useMemo

把“創(chuàng)建”函數(shù)和依賴項(xiàng)數(shù)組作為參數(shù)傳?入useMemo,它僅會(huì)在某個(gè)依賴項(xiàng)改變時(shí)才重新計(jì)算memoized 值。這種優(yōu)化有助于避免在每次渲染時(shí)都進(jìn)?行行?高開銷的計(jì)算。

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變化,這?里里才重新執(zhí)?行行
      }, [count]);
    const [value, setValue] =useState("");
    return (<div><h3>UseMemoPage</h3>
    <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

把內(nèi)聯(lián)回調(diào)函數(shù)及依賴項(xiàng)數(shù)組作為參數(shù)傳?入useCallback,它將返回該回調(diào)函數(shù)的 memoized 版本,該回調(diào)函數(shù)僅在某個(gè)依賴項(xiàng)改變時(shí)才會(huì)更更新。當(dāng)你把回調(diào)函數(shù)傳遞給經(jīng)過優(yōu)化的并使?用引?用相等性去避免?非必要渲染(例例如shouldComponentUpdate)的?子組件時(shí),它將?非常有?用

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><h3>UseCallbackPage</h3>
  <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><h3>Child</h3>
        <buttononClick={() =>console.log(addClick())}>add</button></div>   
     )
  }
}

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

注意依賴項(xiàng)數(shù)組不不會(huì)作為參數(shù)傳給“創(chuàng)建”函數(shù)。雖然從概念上來說它表現(xiàn)為:所有“創(chuàng)建”函數(shù)中引?用的值都應(yīng)該出現(xiàn)在依賴項(xiàng)數(shù)組中。未來編譯器?會(huì)更更加智能,屆時(shí)?自動(dòng)創(chuàng)建數(shù)組將成為可能。

補(bǔ)充介紹React的memo與useMemo及useCallback

React.memo

  • 概念解析
    • 將組件在相同的情況下的渲染結(jié)果,緩存渲染結(jié)果
    • 當(dāng)組件傳入props相同的參數(shù)時(shí),淺對(duì)比之后有之前的傳入項(xiàng),則復(fù)用緩存最近一次結(jié)果
    • 數(shù)據(jù)對(duì)比,只做淺對(duì)比。如果需要控制對(duì)比過程,需要自己寫自定義比對(duì)函數(shù)。傳參數(shù)置第二個(gè)參數(shù) -請(qǐng)注意不要與 shouldComponetUpdate 返回值混合

類組件通過比對(duì)數(shù)據(jù),可以控制渲染的方式?

  • React.PureComponent
  • shouldComponentUpdate

hooks的useMemo

  • 概念解析
    • 函數(shù)組件的緩存渲染結(jié)果
    • 可以將當(dāng)前的組件節(jié)點(diǎn)顆?;?/li>
    • 通過第二個(gè)參數(shù)去判斷,是否更新useMemo的回調(diào)函數(shù)
    • 回調(diào)函數(shù)是一個(gè)必包,如果創(chuàng)建使用了 useState,會(huì)緩存 state 值,不會(huì)拿到實(shí)時(shí)更新的值

hooks的useCallback

  • 概念解析
    • 返回一個(gè)需要緩存的函數(shù)
    • 傳遞需要更新的依賴項(xiàng),一般回調(diào)函數(shù)內(nèi)部使用的數(shù)據(jù),都需要添加在依賴項(xiàng)中
    • 避免父子之間,子級(jí)生成新的props函數(shù),從而刷新子組件
      • 當(dāng)父級(jí)組件傳遞給子級(jí)組件一個(gè)函數(shù)時(shí),無狀態(tài)組件每次都會(huì)重新生成新的props函數(shù),導(dǎo)致子組件刷新
    • 一般聯(lián)合useMemo一起使用

到此這篇關(guān)于React中useMemo與useCallback的區(qū)別的文章就介紹到這了,更多相關(guān)React useMemo與useCallback區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React中嵌套組件與被嵌套組件的通信過程

    React中嵌套組件與被嵌套組件的通信過程

    這篇文章主要介紹了React中嵌套組件與被嵌套組件的通信過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • 新建的React Native就遇到vscode報(bào)警解除方法

    新建的React Native就遇到vscode報(bào)警解除方法

    這篇文章主要為大家介紹了新建的React Native就遇到vscode報(bào)警解除方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • React實(shí)現(xiàn)全選功能

    React實(shí)現(xiàn)全選功能

    這篇文章主要為大家詳細(xì)介紹了React實(shí)現(xiàn)全選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • React 腳手架使用指南(最新推薦)

    React 腳手架使用指南(最新推薦)

    本文介紹了React腳手架(CreateReactApp)的使用指南,包括創(chuàng)建項(xiàng)目、項(xiàng)目結(jié)構(gòu)、常用命令、最佳實(shí)踐、常見問題解決以及腳手架的優(yōu)勢(shì),結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-12-12
  • react實(shí)現(xiàn)數(shù)據(jù)監(jiān)聽方式

    react實(shí)現(xiàn)數(shù)據(jù)監(jiān)聽方式

    這篇文章主要介紹了react實(shí)現(xiàn)數(shù)據(jù)監(jiān)聽方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React Antd中如何設(shè)置表單只輸入數(shù)字

    React Antd中如何設(shè)置表單只輸入數(shù)字

    這篇文章主要介紹了React Antd中如何設(shè)置表單只輸入數(shù)字問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • react實(shí)現(xiàn)頭部導(dǎo)航,選中狀態(tài)底部出現(xiàn)藍(lán)色條塊問題

    react實(shí)現(xiàn)頭部導(dǎo)航,選中狀態(tài)底部出現(xiàn)藍(lán)色條塊問題

    這篇文章主要介紹了react實(shí)現(xiàn)頭部導(dǎo)航,選中狀態(tài)底部出現(xiàn)藍(lán)色條塊問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 使用Jenkins部署React項(xiàng)目的方法步驟

    使用Jenkins部署React項(xiàng)目的方法步驟

    這篇文章主要介紹了使用Jenkins部署React項(xiàng)目的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • React框架核心原理全面深入解析

    React框架核心原理全面深入解析

    React是前端開發(fā)每天都用的前端框架,自然要深入掌握它的原理。我用 React 也挺久了,這篇文章就來總結(jié)一下我對(duì) react 原理的理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-11-11
  • 一個(gè)基于react的圖片裁剪組件示例

    一個(gè)基于react的圖片裁剪組件示例

    本篇文章主要介紹了一個(gè)基于react的圖片裁剪組件示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04

最新評(píng)論