搜索

首页  >  问答  >  正文

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粉845862826559 天前675

全部回复(2)我来回复

  • P粉146080556

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

    先说结论吧,完全没用。

    为什么? 因为metricsState.myMetrics只是一个取值过程,并不涉及昂贵的计算。

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

    所以我认为这属于过早优化

    回复
    0
  • P粉726133917

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

    useMemo 用于高成本计算,您不想运行每个渲染。喜欢

    1

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

    或者类似的东西。您仅在 megaBigArray 发生变化时计算该变量。

    在您的情况下,无论如何,该代码都会在每次渲染时运行,但是 useSelector 应该仅在您选择的商店部分发生更改时触发渲染。所以没有它你应该也能过得很好。

    回复
    0
  • 取消回复