考虑以下代码
useEffect(effect, [v]) // v can be undefined
我只想在第一个渲染之后或effect
更改时仅运行功能。
我的问题是
v
中的v
是否发生了变化?或者,我可以依靠react来检查依赖项列表的值(即effect
)。有条件地触发效果
效果的默认行为是 在每个完成的渲染后触发效果。这样的效果是 如果其依赖项之一发生更改,则始终会重新创建。
说如果 [v]
,然后,one of its dependencies changes
。但是,它没有提及相反的情况:当且仅当其依赖关系之一发生变化时,才会重新创建效果。
我只记得在钩子的早期阶段,我读到某个地方an effect is recreated
函数即使在不更改effect
的情况下也可以运行,以优化内存,或者在并发模式下?我真的不记得确切,也找不到源。
如果任何人都可以告诉我React的工作方式,或者参考相关的react内部源代码,这将非常有帮助。我认为他们将对第一个渲染进行特殊检查,否则,当v
在第一个渲染之后为v
时,undefined
将不会运行。