Hooks - useMemo & useCallBack & React.memo

useMemo & useCallBack

在 React 中,當(dāng)父組件發(fā)生變化的時(shí)候,子組件會(huì)重新渲染一遍,但是在子組件中,有些事件我們并不想讓它執(zhí)行

在 class component 中有 shouldComponentUpdate 中可以進(jìn)行一個(gè)判斷

在 function component 中,可以用 useMemouseCallback

這兩個(gè) hooks 解決的是一個(gè)重復(fù)渲染的問(wèn)題

useCallbackuseMemo 的參數(shù)跟 useEffect 一致,他們之間最大的區(qū)別是 useEffect 會(huì)用于處理副作用,而前兩個(gè) hooks不能

useCallbackuseMemo 的區(qū)別在于,useCallback 返回一個(gè) function,useMemo 返回一個(gè) value

換句話說(shuō),useCallbackuseMemo 可以做一個(gè)緩存,前者緩存一個(gè)引用,后者緩存一個(gè)值

也就是 useCallback(fn, deps)useMemo(() => fn, deps) 是等價(jià)的

關(guān)于用法

useCallback

const memorizedCallback = useCallback(
    () => {
        doSomething(a, b)
    },
    [a, b]
);

當(dāng) [a. b] 不變的時(shí)候 memorizedCallback 的引用不變,useCallback 的第一個(gè)入?yún)⒑瘮?shù)會(huì)被緩存,從而達(dá)到性能優(yōu)化的目的

useMemo

const memorizedValue = useMemo(() => computedExpensiveValue(a, b), [a, b]);

當(dāng) [a, b] 不變的時(shí)候 memorizedValue 的值不變,useMemo 的第一個(gè)入?yún)⒑瘮?shù)不會(huì)執(zhí)行,從而達(dá)到節(jié)省計(jì)算量的目的

React.memo

React.memo 是一個(gè)高階組件,功能類(lèi)似于 React.PureComponent

默認(rèn)情況下,memo 會(huì)對(duì)復(fù)雜的對(duì)象做一個(gè)淺層的對(duì)比,如果想要控制對(duì)比過(guò)程,可以將自定義比較的函數(shù)通過(guò)第二個(gè)參數(shù)傳入來(lái)實(shí)現(xiàn)

function MyComponent(props) {
    /* 使用 props 渲染 */
}

function areEqual(prevProps, nextProps) {
    /*
    ...
    */
}

export default React.memo(MyComponent, areEqual);

注意:React.memo 比較的是 props,shouldComponentUpdate 比較的是 stateprops

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 使用React Hooks有什么優(yōu)勢(shì)? 什么是hookshook 是一些可以讓你在函數(shù)組件里面鉤入react st...
    Lyan_2ab3閱讀 397評(píng)論 0 1
  • 先來(lái)看看類(lèi)組件的生命周期Class 組件的生命周期 相對(duì)以前較老的生命周期,新增了 getDerivedState...
    CondorHero閱讀 620評(píng)論 0 1
  • 1、什么是Hooks 在不編寫(xiě) class 的情況下使用 state 以及其他的 React 特性(生命周期) 規(guī)...
    郭仙人不是閑人閱讀 529評(píng)論 0 0
  • 推薦指數(shù): 6.0 書(shū)籍主旨關(guān)鍵詞:特權(quán)、焦點(diǎn)、注意力、語(yǔ)言聯(lián)想、情景聯(lián)想 觀點(diǎn): 1.統(tǒng)計(jì)學(xué)現(xiàn)在叫數(shù)據(jù)分析,社會(huì)...
    Jenaral閱讀 5,981評(píng)論 0 5
  • 城空了,有樹(shù)長(zhǎng)出來(lái) 我的城死了 鑄起它的人,殺死它的人 不愿因?yàn)檫@件事而驕傲 一座城的終結(jié) 永遠(yuǎn)因?yàn)榻K結(jié)這件事而顯...
    于十六閱讀 3,112評(píng)論 6 17

友情鏈接更多精彩內(nèi)容