React:正在访问 children 和 anti-pattern 的状态吗?

React: is accessing the state of children an anti-pattern?

我有一个组件需要在某个时候读取属于其 child 的状态变量。
是否应该将该特定状态变量移至 parent,并通过回调进行更改?

据我所知,其中一些可能是错误的,这些是将状态移动到 parent 的利弊:

亲: 这似乎更符合反应的单向数据流口头禅。

Con: parent 的其他 children 将在状态更改时重新渲染(不是在真实的 DOM 中,但它可能仍有性能影响)。

这里的最佳做法是什么?

数据流的最佳实践是:

  • 从 parent 到 child:通过 props
  • 从 child 到 parent:通过处理程序
  • 从不相关的组件到另一个:通过消息总线

例如

<Child onEvent={this.handleEvent}>

parent 有:

handleEvent: function(dataFromChild) {

}

正如 Petka 指出的那样,国家应该居于首位。
Thinking in React 解释的很好。

Other children of the parent will be rerendered on state change (not in the real DOM, but it may still have a performance impact).

除非您以 60fps 的速度执行此操作,否则您不太可能注意到这一点。
如果你这样做,React 会为你提供可选的 shouldComponentUpdate (and PureRenderMixin).