我想更新ComponentDidmount中的状态,但setState函数没有执行

ComponentDidMount() {
    if (this.props.location.search.includes("?token")) {
      const email = getQueryVariable(this.props.location.search, "email");
      const token = getQueryVariable(this.props.location.search, "token");
      if (this.state.showValidationModal === false) {
        console.log("Before",this.state.showValidationModal);
        this.setState({
          showValidationModal:true
        })
        console.log("After",this.state.showValidationModal);

      }
    }
  }

当应用程序挂载时,两个showValidationModal日志(log)的结果都是false

推荐答案

setState是一个异步操作,它不会立即更新状态,但setState回调具有来自该状态的最后一个实例值,因此.

ComponentDidMount() {
if (this.props.location.search.includes("?token")) {
  const email = getQueryVariable(this.props.location.search, "email");
  const token = getQueryVariable(this.props.location.search, "token");
  if (this.state.showValidationModal === false) {
    console.log("Before",this.state.showValidationModal);
    this.setState({
      showValidationModal:true
    })
    // here you get the latest value of showValidationModal state
    this.setState(prevState => console.log(prevState.showValidationModal))

    // here you get the old value.
    console.log("After",this.state.showValidationModal);

  }
}
}

Javascript相关问答推荐

Klaro与Angular的集成

每次子路由重定向都会调用父加载器函数

Angular:动画不启动

TypeScript索引签名模板限制

如何粗体匹配的字母时输入搜索框使用javascript?

在open shadow—root中匹配时,使用jQuery删除一个封闭的div类

我怎么才能得到Kotlin的密文?

可更改语言的搜索栏

如何强制Sphinx中的自定义js/css文件始终加载更改而不缓存?

在我的index.html页面上找不到我的Java脚本条形图

在使用位板时,如何在Java脚本中判断Connect 4板中中柱的对称性?

在开发期间,Web浏览器如何运行&qot;.jsx&qot;文件?

每次重新呈现时调用useState initialValue函数

ngOnChanges仅在第二次调用时才触发

Pevent触发material 用户界面数据网格中的自动保存

有没有办法通过使用不同数组中的值进行排序

表单数据中未定义的数组键

rxjs在每次迭代后更新数组的可观察值

JavaScript -如何跳过某个字符(S)来打乱字符串中的字符

如何将缓冲区数组转换回音频