useCallback和useMemo用法區別

2021-10-18 23:27:34 字數 2005 閱讀 4702

1.usecallback

作用:在依賴項發生變化的時候,返回乙個新的函式引用。

需求:1)請求資料的介面需要放在useeffect外面,因為要將該方法傳遞給子元件

2)在conditions發生變化時,自動執行該函式

3)只有在conditions發生變化時,才會重新render子元件中的內容。

**如下:

const fetchpoollist =

usecallback((

)=>

= res

if(ret ===

'0'&& res.data)))

}else)}

}).catch

(ex =>

) message.

error

('商品池資訊獲取錯誤')}

)},[conditions]

)// 當入參變化時再一次請求資料

useeffect((

)=>

,[fetchpoollist]

)

/>

function

mytest

(props)

= props

console.

log(

'重新渲染了'

)fetchpoollist()

return

(我是測試<

/div>)}

export

default mytest

執行1:改變conditions

執行函式,列印『重新渲染』

執行2:改變data(另乙個state)

函式不執行,但是還是會列印『重新渲染』

改進方法:

function

mytest

(props)

= props

console.

log(

'重新渲染了'

)fetchpoollist()

return

(我是測試<

/div>)}

export

default react.

memo

(mytest)

react.memo會對props中的內容進行淺比較,如果不一樣就會重新渲染,否則不會執行。

執行結果:函式不執行,不列印『重新渲染』

執行3:setconditions(相同的conditions)

在setconditions的時候,由於是將乙個新的物件賦值給conditions,所以會重新渲染。

執行結果:執行函式,列印『重新渲染』

總結:usecallback需要結合react.memo(函式元件)方法 react.purecomponent(class元件)一起使用。

2.usememo

作用: 與usecallback類似,只是返回乙個值,而不是函式的引用,所以應用更廣泛。

// ...

const

[count, setcount]

=usestate(0

);const userinfo =

return

>

// ...

const

[count, setcount]

=usestate(0

);const userinfo =

usememo((

)=>;}

,[count]);

return

>

對比以上幾種情況,很明顯的上面的 userinfo 每次都將是乙個新的物件,無論 count 發生改變沒,都會導致 usercard 重新渲染,而下面的則會在 count 改變後才會返回新的物件。

usememo其他用處:可以將一些複雜的運算放在裡面,只有依賴發生變化的時候才會重新計算。

useMemo和useCallback的區別和使用

usememo const memoizedvalue usememo computeexpensivevalue a,b a,b 將 建立 函式和依賴項新增到引數上使用備註,它僅會在某個依賴項改變時才重新計算備忘錄值。這種優化避免在每次渲染時都進行高開銷的計算。也就是說usememo可以讓函式在某...

useMemo與useCallback使用指南

在介紹一下這兩個hooks的作用之前,我們先來回顧一下react中的效能優化。在hooks誕生之前,如果元件包含內部state,我們都是基於class的形式來建立元件。當時我們也知道,react中,效能的優化點在於 呼叫setstate,就會觸發元件的重新渲染,無論前後的state是否不同 父元件更...

Express 中 get 和 use 的區別

先說我發現的結論 結論說完,讓我們先看個栗子 var express require express var index require routes index 1 req,res,next 2 req,res,next 3 4 index是乙個路由物件,結果,例1 2 4結果都能正確顯示,而例3...