请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

带有表达式依赖的useMemo重复计算的判断执行

const double = useMemo(() => {
  return count * 2;
}, [count === 3]);

为什么当count等于4 的时候还要执行一次呢,难道和do while执行顺序一样,不应该啊

正在回答

1回答

茵风泳月 2019-05-22 17:37:30

你好同学,我想你提的问题的上下文是类似这样的代码:

const double = useMemo(() => {
  return count * 2;
}, [count === 3]);

其实这个比较容易理解,useMemo、useEffect、useCallback 是否重复执行仅仅判断当前的依赖值与上一次是否一样,至于其值是数字,是对象,是true、是false都不重要。

显然,当count计算到3的时候,useMemo的第二个参数是 [true],当count变成4的时候,就是 [false],显然,值发生了改变,所以当count等于3和4的时候,都会触发useMemo重新计算。

祝您学习愉快!

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信