选择器连接多个组件,父组件是否保证先更新?

Selector connected to multiple components, is parent component guaranteed to update first?

我的父子组件如下:

const Parent = ({ valueFromSelector }) => {
  if (valueFromSelector === undefined) return null;

  return <Child />;
}
const Child = ({ valueFromSelector }) => {
  return <span>`i am unsafely using ${valueFromSelector.property}`</span>
}

使用 valueFromSelector.property 是否不安全,或者如果 valueFromSelector 在 Parent 中受到保护,我可以确定 Child 永远不会 update/render 吗?

基本上我要问的是选择器是否保证在 "order" 中从父组件更新到子组件。

简短的回答,不幸的是,选择器不能保证在 "order" 中从父组件更新到子组件。在某些情况下可能会出现问题。

这个问题被称为zombie children,redux version 6 试图修复这个问题,但不幸的是Context API 无法在性能上完全支持redux。所以他们不得不在版本 7 中恢复该更改,并且无法防止功能组件出现问题。

以下文章更详细地回答了您的问题:

https://kaihao.dev/posts/Stale-props-and-zombie-children-in-Redux

https://react-redux.js.org/api/hooks#stale-props-and-zombie-children