搜尋

首頁  >  問答  >  主體

useMemo 提供 Redux

<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粉845862826P粉845862826526 天前663

全部回覆(2)我來回復

  • P粉146080556

    P粉1460805562023-08-26 16:13:29

    先說結論吧,完全沒用。

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

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

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

    回覆
    0
  • P粉726133917

    P粉7261339172023-08-26 09:26:32

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

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

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

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

    回覆
    0
  • 取消回覆