useMemo 提供 Redux
P粉845862826
P粉845862826 2023-08-25 21:04:43
0
2
651
<p>我是 Redux 新手,我希望盡可能提高 Web 應用程式的效能。 </p> <p>我在 redux 中有一個狀態,我將其儲存在變數中以便稍後顯示。 </p> <p>這是代碼:</p> <pre class="brush:php;toolbar:false;">constmetricsState = useSelector((state: MetricsStateObject) => state.MetricsState); const myMetrics =metricState.myMetrics;</pre> <p>我發現 useMemo 在資料沒有變化的情況下不會重新渲染,從而提高了效能。 </p> <p>所以我想知道 <code>const myMetrics = useMemo(() =>metricsState.myMetrics, [metricsState.myMetrics]);</code> 是一個好的做法,還是完全沒用? </p> <p>感謝您的寶貴時間。 </p>
P粉845862826
P粉845862826

全部回覆(2)
P粉146080556

先說結論吧,完全沒用。

為什麼? 因為metricsState.myMetrics只是一個取值過程,並不涉及昂貴的計算。

但是useMemo本身就消耗了一定的計算量。

所以我認為這屬於過早優化

P粉726133917

useMemo 用於高成本運算,您不想執行每個渲染。喜歡

const some = useMemo(()=> megaBigArray.reduce((acc,i)=>acc*i,0), [megaBigArray])

或類似的東西。您僅在 megaBigArray 發生變化時計算該變數。

在您的情況下,無論如何,程式碼都會在每次渲染時運行,但是 useSelector 應該僅在您選擇的商店部分發生更改時觸發渲染。所以沒有它你應該也能過得很好。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板