首页 > 解决方案 > 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"
      });
    }
  }

我在道具的帮助下更新了我的状态,但是组件正在获取道具但状态没有更新

标签: javascriptreactjs

解决方案


setState是异步的。只需在对该方法的回调中发出警报即可。

if (this.props.overlay) {
  this.setState(
    { className: "wrapper_overlay" },
    () => alert(this.state.className);
  );
}

注意:您可以并且应该也用于shouldComponentUpdate检查setState呼叫何时完成


推荐阅读