javascript - Reactjs 状态未更新
问题描述
constructor(props) {
super(props);
this.state = {
active: false,
showSideBar: false,
className: ""
}
}
componentDidMount() {
if (this.props.overlay) {
this.setState({
className: "wrapper_overlay"
});
alert(this.state.className);
}
else if (this.props.SideBarWithIcon) {
this.setState({
className: "wrapper_clopsed"
});
}
}
我在道具的帮助下更新了我的状态,但是组件正在获取道具但状态没有更新
解决方案
setState
是异步的。只需在对该方法的回调中发出警报即可。
if (this.props.overlay) {
this.setState(
{ className: "wrapper_overlay" },
() => alert(this.state.className);
);
}
注意:您可以并且应该也用于shouldComponentUpdate
检查setState
呼叫何时完成