reactjs - 子组件的 useEffect 在父组件的 useEffect 之前调用
问题描述
我试图理解为什么useEffect
在父组件之前调用子组件useEffect
。
据我了解,useEffect
应该按照根据 React文档定义的顺序调用它们:
React 将按照指定的顺序应用组件使用的每个效果。
这意味着,useEffect
应该在 Children's 之前调用Parent's useEffect
,但事实并非如此。
例子:
const MainComponent = () => {
return {
<ParentComponent />
}
const ParentComponent = () => {
useEffect(() => {
console.log('parent');
}, []);
return <div>Parent <ChildrenComponent /></div>;
}
const ChildrenComponent = () => {
useEffect(() => {
console.log('children');
}, []);
return <div>Children</div>;
}
如果你检查控制台,你应该先看到children
然后parent
实时代码:https ://codesandbox.io/s/crazy-butterfly-yn046?file=/src/App.js
我的直觉告诉我这与父子组件的反应方式Layout
和反应方式有关?Paint
解决方案
这个:
React 将按照指定的顺序应用组件使用的每个效果。
更准确地说是:
React 将按照组件中指定的顺序应用组件使用的每个效果。
例如:
const SomeComponent = () => {
useEffect(() => {
console.log('This will run first');
});
useEffect(() => {
console.log('This will run second');
});
// ...
保证按顺序运行。
它并没有说明不同组件中效果的运行顺序。
推荐阅读
- c - 为什么 O_RDWR 在这段代码中没有给我写和读权限?
- excel - 如何使用 VBA 将多值单元格拆分为多行?
- python-3.x - 使用 Python 的 Lucas-Lehmer Mersenne 数
- css - 如何对齐具有不同标题长度的 div
- unicode - 磁盘上的 unicode 字符在哪里,映射过程是什么?
- mysql - 如何在 Go-Gorm 中禁用默认错误记录器
- c# - 在此代码段中找出 GroupBy
- matlab - 如何在 GUI 界面中编写主函数,其中按钮回调作为中断工作
- javascript - Paper.js 中的动画片段和位置
- python - NameError:名称'uinput'在Python中未定义错误