返回一個(gè)memoized值。把“創(chuàng)建”函數(shù)和依賴項(xiàng)數(shù)組作為參數(shù)傳入useMemo,它僅會(huì)在某個(gè)依賴項(xiàng)改變時(shí)才重新計(jì)算memoized值。
這種優(yōu)化有助于避免在每次渲染時(shí)都進(jìn)行高開銷的計(jì)算。
傳入useMemo的函數(shù)會(huì)在渲染期間執(zhí)行。請(qǐng)不要在這個(gè)函數(shù)內(nèi)部執(zhí)行與渲染無關(guān)的操作,諸如副作用這類的操作屬于useEffect的適用范疇,而不是 useMemo。
如果沒有提供依賴項(xiàng)數(shù)組,useMemo在每次渲染時(shí)都會(huì)計(jì)算新的值。
你可以把useMemo作為性能優(yōu)化的手段,但不要把它當(dāng)成語義上的保證。
將來,React 可能會(huì)選擇“遺忘”以前的一些 memoized 值,并在下次渲染時(shí)重新計(jì)算它們,比如為離屏組件釋放內(nèi)存。
先編寫在沒有 useMemo 的情況下也可以執(zhí)行的代碼 —— 之后再在你的代碼中添加 useMemo,以達(dá)到優(yōu)化性能的目的。