setState不更新状态

时间:2018-12-18 19:17:44

标签: javascript reactjs setstate

为什么this.setState不起作用。

constructor(props) {
 super(props);
 this.state ={
    obj: [],
 }
 }
 ,


componentDidUpdate(prevProps){
const { obj } = this.props;
  this.setState({obj});
}
}

1 个答案:

答案 0 :(得分:4)

如果您查看自己的开发控制台,则应该在该控制台日志中看到错误,因为您使用的是“普通”函数,没有任何类型的this保留。相反,一旦该函数被调用,this标识符将引用全局上下文(例如window),而不是您的组件。

使用箭头功能来确保this是您实际上 所指的那个,并且您会看到setState正常工作:

componentDidUpdate(prevProps){
  this.setState({
    siteDataState: this.props.siteData
  }, () => {
    console.log(this.state.siteDataState);
  });
}

也就是说,这要进行级联触发,因为您要在组件更改时触发的函数中更改组件 ,因此请在其中放置一些if代码,确保this.state.siteDataState尚未 this.props.siteData中的内容。