在
useEffect和
setState每个变化都会导致额外的呈现:第一个将呈现“落后”与陈旧的数据,然后它会立即排队,用新的数据的附加渲染。
假设我们有:
function expensiveCalculation(x) { return x + 1; }; // Maybe I'm running this on a literal potato
假设
numberProp最初为0:
然后,如果我们更改
numberProp为2:
- 该
useMemo
运行和3
呈现。 - 该
useEffect
版本运行,并呈现1
再次,那么效果触发,并与正确值的组件重播3
。
就
expensiveCalculation运行频率而言,两者具有相同的行为,但是
useEffect版本导致的渲染量是原来的两倍,这由于其他原因而对性能不利。
另外
useMemo,IMO 的版本更干净,更易读。它不会引入不必要的可变状态,并且运动部件更少。
因此,最好只
useMemo在这里使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)