如果我不在willReceiveProps中使用setState,是否有任何问题?

时间:2018-03-14 03:44:22

标签: reactjs react-native

setState中使用componentWillReceiveProps的遗憾,我只是直接将道具设置为组件的本地属性:

class Inventory extends React.PureComponent {
  pieData = {};

  doSomeTransition = (pieData) => {

  };

  componentWillReceiveProps(nextProps) {
    if (this.props.productionOverview !== nextProps.productionOverview) {
      this.pieData = this.doSomeTransition(nextProps.productionOverview);
    }
  }

  render() {
    return (
      <Production chartData={this.pieData} />
    );
  }

}

每次<Production />更改时,props. productionOverview组件都会重新渲染。

我觉得这是一种错误的方式,但我无法说明原因,因为所有组件都能按预期运行良好。

2 个答案:

答案 0 :(得分:1)

componentWillReceiveProps通常用于在道具发生变化时更新您的React组件状态。这就是为什么你通常会在该函数中看到setState

有人说,在调用别的东西时没有错,这一切都取决于你在doSomeTransition内实际进行的操作类型...

答案 1 :(得分:0)

我不相信您会遇到任何明显的副作用,但您无法确定何时实际更新/修改该属性的值,而使用您知道该状态的this.state正在根据state's lifecycle处理。