【发布时间】:2021-08-21 12:03:27
【问题描述】:
给定一个顶级 App 组件,它呈现以下层次结构:
<Parent>
<Child />
</Parent>
如果Parent 和Child 都调用同一个钩子来获取某个全局状态,并且该状态发生了变化,那么Parent 或Child 会先重新渲染吗?
另外,假设它们都使用来自全局状态的某个变量 user,并且 Parent 仅在 user 未定义时才呈现其 children 属性。 Child 道具是否会被 undefined user 渲染?
【问题讨论】:
-
例如,如果您仅在用户在场时渲染孩子,我推断您的意思是这样的 - { user &&
ChildComponent 将不会被挂载。所以我认为它不可能使用 进行渲染undefined -
可以通过在渲染函数中添加
console.log来检查。 -
@Shyam 有点像。我的意思是在
Parent我会有{user && children}。在这种情况下,children又将是<Child />。如果user是undefined,我预计Child甚至不应该被渲染,但在我的实际生产应用程序中它是,所以我在Child中收到user undefined错误。请注意,Parent和Child都从全局挂钩中获取user- 它不是从Parent传递到Child。 -
@DennisVash 我已经尝试过了,我在本地和生产中得到了不同的日志。在本地,
Parent首先渲染,但在生产中,Child首先渲染,即使考虑到我在Parent中的条件,我希望它根本不会渲染。本地控制台日志:AuthLayout CustomerDetailsForm UPDATING USER VARIABLE USER VARIABLE UPDATED AuthLayout 生产控制台日志:AuthLayout CustomerDetailsForm UPDATING USER VARIABLE USER VARIABLE UPDATED CustomerDetailsForm TypeError: user is undefined in CustomerDetailsForm
标签: reactjs react-hooks