考虑以下代码
useEffect(effect, [v]) // v can be undefined
我只想在第一次渲染后或更改时运行该effect
函数。v
我的问题是
- 我需要检查是否有
v
变化effect
吗?或者我可以依靠 react 来检查依赖列表的值(即[v]
)。 - 如果 1. 的答案是后者,这种行为是否应该在不久的将来改变?例如,当并发模式被释放时。
有条件地触发效果
效果的默认行为是在每次完成渲染后触发效果。这样,如果其依赖项之一发生更改,则始终会重新创建效果。
它说如果 one of its dependencies changes
,那么,an effect is recreated
。但是,它没有提到相反的情况:当且仅当其依赖项之一发生更改时,才会重新创建效果。
我只记得在hook的早期,我在某处读到该effect
函数在某些情况下即使不更改也可以运行,v
以优化内存,还是在并发模式下?我实在记不太清了,也查不到出处。
如果有人能告诉我 React 到底是怎么做的,或者参考 react 的相关内部源代码,那将非常有帮助。我认为他们会对第一次渲染进行特殊检查,否则,在v
第undefined
一次渲染之后,effect
将不会运行。