使用带Redux的备忘录

svgewumm  于 2022-11-30  发布在  其他
关注(0)|答案(2)|浏览(120)

我是Redux的新手,我想尽可能提高我的Web应用程序的性能。
我在redux中有一个状态,我将它存储在一个变量中,以便稍后显示。
代码如下:

const metricsState = useSelector((state: MetricsStateObject) => state.MetricsState);
const myMetrics = metricsState.myMetrics;

我看到useMemo通过在数据没有变化时不重新呈现来提高性能。
所以我想知道const myMetrics = useMemo(() => metricsState.myMetrics, [metricsState.myMetrics]);是一个好的实践,还是完全无用?
感谢您抽出宝贵时间。

2izufjch

2izufjch1#

useMemo用于高成本计算,您不希望运行每个渲染。

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

或者类似的东西。你只计算变量,如果megaBigArray改变。
在你的例子中,这段代码无论如何都会在每次渲染时运行,但是useSelector应该只在你选择的存储部分发生变化时触发渲染。

qnyhuwrf

qnyhuwrf2#

我先说说结论,完全没用。
为什么?因为metricsState.myMetrics只是一个value-taking过程,不涉及昂贵的计算。
但是useMemo本身消耗一定量的计算。
所以我认为这属于过早优化

相关问题