例如,如果我有组件 A 和 B,并且组件 B 是组件 A 的子级:
<A>
<B />
</A>
在 A 中,我们有:
useEffect(() => {
console.log('Parent A useEffect')
})
在 B 中,我们有:
useEffect(() => {
console.log('Child B useEffect')
})
我做了一些测试,我看到了两件事:
- 在第一次加载时(例如在 F5 之后),日志结果是:
父 A 使用效果
儿童B使用效果
- 如果我们去另一个组件然后又回到组件B(例如不是通过重新加载而是使用react-router),日志结果是:
儿童B使用效果
父 A 使用效果
在两种情况下,结果相反。这让我有点困惑。
我搜索了谷歌componentDidMount
,我发现了这个:https : //github.com/facebook/react/blob/v15.0.1/docs/docs/ref-03-component-specs.md#mounting-componentdidmount
componentDidMount()
子组件的方法先于父组件调用。
但我找不到有关的相应文档 useEffect
那么useEffect
父/子组件中正确的执行顺序是什么?