在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
组件都会重新渲染。
我觉得这是一种错误的方式,但我无法说明原因,因为所有组件都能按预期运行良好。
答案 0 :(得分:1)
componentWillReceiveProps
通常用于在道具发生变化时更新您的React组件状态。这就是为什么你通常会在该函数中看到setState
。
有人说,在调用别的东西时没有错,这一切都取决于你在doSomeTransition
内实际进行的操作类型...
答案 1 :(得分:0)
我不相信您会遇到任何明显的副作用,但您无法确定何时实际更新/修改该属性的值,而使用您知道该状态的this.state
正在根据state's lifecycle处理。