我有一个组件需要在某个时候读取属于其子级的状态变量。
是否应该将此特定状态变量移至父级,并通过回调进行更改?
在我看来,其中一些可能是错误的,以下是将状态转移到父级的利弊:
Pro: 这似乎更符合 React 的单向数据流准则。
缺点:父级的其他子级将在状态更改时重新渲染(不是在真实的 DOM 中,但它可能仍会对性能产生影响)。
这里的最佳做法是什么?
我有一个组件需要在某个时候读取属于其子级的状态变量。
是否应该将此特定状态变量移至父级,并通过回调进行更改?
在我看来,其中一些可能是错误的,以下是将状态转移到父级的利弊:
Pro: 这似乎更符合 React 的单向数据流准则。
缺点:父级的其他子级将在状态更改时重新渲染(不是在真实的 DOM 中,但它可能仍会对性能产生影响)。
这里的最佳做法是什么?
数据流的最佳实践是:
例如
<Child onEvent={this.handleEvent}>
父母有:
handleEvent: function(dataFromChild) {
}
正如 Petka 所指出的,状态应该居于首位。
在 React 中思考很好地解释了这一点。
父级的其他子级将在状态更改时重新呈现(不在真实的 DOM 中,但它可能仍会对性能产生影响)。
除非您以 60fps 的速度执行此操作,否则您不太可能注意到这一点。
如果你这样做了,React 会为你提供 optional shouldComponentUpdate(和PureRenderMixin)。