【发布时间】:2017-08-17 12:22:40
【问题描述】:
我有一个由其他人编写的代码,其中 constructor 初始化了 state,但如果 props 是 undefined,也称为 setState,代码如下:
constructor(props) {
super(props);
this.state = {
subId: props.match.params.subId
}
if(props!==undefined){
this.setState({
subId: props.match.params.subId
});
}
}
当我执行我的模块时,我在控制台中收到警告 warning.js:35 警告:setState(...):只能更新已安装或已安装的组件。这通常意味着您在未安装的组件上调用了 setState()。这是无操作的。
我搜索了一下,发现 setState 不应该在构造函数中调用。但是仍然无法理解在构造函数中所做的事情以及反应所期望的理想方式。需要一些帮助来理解,构造函数中完成的代码是否正确,如果是,为什么,如果不是,为什么?
【问题讨论】:
-
if语句不是不需要吗?