React:正在访问儿童的反模式状态?

时间:2015-01-08 20:54:23

标签: reactjs

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

正如我所看到的,其中一些可能是错误的,这些是将州迁移到父母的利弊:

这似乎更多地依赖于反应的单向数据流咒语。

Con:父级的其他子项将在状态更改时被重新呈现(不是在真正的DOM中,但它可能仍会对性能产生影响)。

这里的最佳做法是什么?

2 个答案:

答案 0 :(得分:12)

数据流的最佳做法是:

  • 从父母到孩子:通过道具
  • 从孩子到父母:通过处理程序
  • 从不相关的组件到另一个组件:通过消息总线

e.g。

<Child onEvent={this.handleEvent}>

父母有:

handleEvent: function(dataFromChild) {

}

答案 1 :(得分:2)

佩特卡指出,国家应该生活在最前面 Thinking in React解释得很清楚。

  

父母的其他孩子将在状态变化时被重新渲染(不是在真正的DOM中,但它可能仍会对性能产生影响)。

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