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...