小编典典

我可以在 React.js 中更新组件的 props 吗?

all

在开始使用 React.js 之后,它似乎props是静态的(从父组件传入),而state根据事件进行更改。但是,我在文档中注意到对
的引用componentWillReceiveProps,其中特别包括以下示例:

componentWillReceiveProps: function(nextProps) {
  this.setState({
    likesIncreasing: nextProps.likeCount > this.props.likeCount
  });
}

这似乎意味着可以根据与 的比较nextProps来更改组件上的属性this.props。我错过了什么?道具是如何变化的,还是我弄错了它的调用位置?


阅读 130

收藏
2022-05-17

共1个答案

小编典典

一个组件不能更新它自己的 props,除非它们是数组或对象(让一个组件更新它自己的 props,即使可能是一种反模式),但是可以更新它的 state
和它的孩子的 props。

例如,仪表板speed在其状态中有一个字段,并将其传递给显示此速度的 Gauge 子项。它的render方法就是return <Gauge speed={this.state.speed} />。当仪表板调用this.setState({speed: this.state.speed + 1})时,仪表会使用 的新值重新渲染speed

就在这发生之前,会componentWillReceiveProps调用 Gauge,以便 Gauge 有机会将新值与旧值进行比较。

2022-05-17