【问题标题】:useEffect does not get triggered when a dependence value changes from 1 to 0当依赖值从 1 变为 0 时不会触发 useEffect
【发布时间】:2022-06-10 22:24:59
【问题描述】:

我对 useEffect 在以下情况下的行为感到非常困惑:

代码 sn-p

const verticesCount = selectionProvider.verticesSelectionProvider.count;
console.log('RENDER ---> COUNT = ', verticesCount);
useEffect(() => {
    console.log('EFFECT : COUNT UPDATED ---> COUNT = ', verticesCount);

    return () => console.log('USEEFFECT:CLEANUP');
}, [verticesCount]);

控制台

1: RENDER ---> COUNT =  0 
2: EFFECT : COUNT UPDATED ---> COUNT =  0
3: RENDER ---> COUNT =  1
4: USEEFFECT:CLEANUP
5: EFFECT : COUNT UPDATED ---> COUNT =  1
6: RENDER ---> COUNT =  0

【问题讨论】:

标签: javascript reactjs


【解决方案1】:

如果没有更好的例子,很难说出问题所在。

我的猜测是verticesCount 没有改变。

例如 verticesCount 为:1,改为 2,改为 1,再一次改为 1

但是因为上次 useEffect 没有触发时状态值没有改变。 一种可能的解决方案:

  • 创建布尔状态:const [update, setUpdate] = useState(false);
  • 在您的verticesSelectionProvider 切换setUpdate(!update) 每次顶点更改时
  • useEffect() 中收听update 而不是verticesCount

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-03
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多