为什么this.setState不起作用。
constructor(props) {
super(props);
this.state ={
obj: [],
}
}
,
componentDidUpdate(prevProps){
const { obj } = this.props;
this.setState({obj});
}
}
答案 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
中的内容。