ReactJS:使用 if else 设置状态

标签 reactjs

我是 ReactJS 新手。在我的索引页面上,loginState 和 modalStatus 的初始状态为 false。我正在尝试在 componentDidMount() 内将 modalStatus 更改为 true。

class Home extends Component {
  constructor(props) {
    super(props);
    this.state = {
      isLoggedIn: true,
      modalStatus: false,
    };
  }

  componentDidMount() {
    if(this.state.isLoggedIn) {
      console.log(this.state.modalStatus);
      this.setState({ modalStatus: true});
      console.log(this.state.modalStatus);
    }  else {
        console.log(this.state.modalStatus);
    }
  render() {
    return (
      <>
       <h1>Hello</h1>
      </>
    );
  }
}

但是即使在 setState 之后,我的控制台也会为 modalStatus 打印 false。我做错了什么吗?请指导我。如果有任何帮助,我将不胜感激。

最佳答案

SetState 是异步的,因此当您执行 setState 时,修改的值不会立即可用。为了查看更新后的状态值

改变

  componentDidMount() {
if(this.state.isLoggedIn) {
  console.log(this.state.modalStatus);
  this.setState({ modalStatus: true});
  console.log(this.state.modalStatus);
}  else {
    console.log(this.state.modalStatus);
}
}

 componentDidMount() {
if(this.state.isLoggedIn) {
  console.log(this.state.modalStatus);
  this.setState({ modalStatus: true}, () => {
       console.log(this.state.modalStatus);
  });
}  else {
    console.log(this.state.modalStatus);
}
}

关于ReactJS:使用 if else 设置状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53349653/

相关文章:

javascript - react : Have to constantly update state to make textarea editable

reactjs - 如何从 react 中的文本区域获取选定的文本?

reactjs - 如何在播放mp4文件时修改React Player的控件。我希望禁用下载选项

javascript - react JS。将元素附加到 DOM

reactjs - 使用 send_file 从 Flask 向 React 前端发送文件会返回一串奇怪的字符

javascript - 如何使 ReactJS 中的 onChange 文本响应

javascript - 类型错误 : undefined is not a function (evaluating dispatch)

reactjs - 类型 'Element' 缺少类型 'SVGSVGElement' 的以下属性

javascript - React - 无法读取未定义的属性 'call'

reactjs - 如何在 Google Cloud Firestore 中使用点表示法中的变量