useMemo与useEffect + useState

useMemo与useEffect + useState,第1张

useMemo与useEffect + useState

useEffect
setState
每个变化都会导致额外的呈现:第一个将呈现“落后”与陈旧的数据,然后它会立即排队,用新的数据的附加渲染。


假设我们有:

function expensiveCalculation(x) { return x + 1; }; // Maybe I'm running this on a literal potato

假设

numberProp
最初为0:

  • useMemo
    版本立即呈现
    1
  • useEffect
    版本呈现
    null
    ,组件呈现然后后的效果运行,改变了状态,和队列了一个新的与渲染
    1

然后,如果我们更改

numberProp
为2:

  • useMemo
    运行和
    3
    呈现。
  • useEffect
    版本运行,并呈现
    1
    再次,那么效果触发,并与正确值的组件重播
    3

expensiveCalculation
运行频率而言,两者具有相同的行为,但是
useEffect
版本导致的渲染量是原来的两倍,这由于其他原因而对性能不利。

另外

useMemo
,IMO 的版本更干净,更易读。它不会引入不必要的可变状态,并且运动部件更少。

因此,最好只

useMemo
在这里使用。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5642393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存