【问题标题】:React setState call not updating state反应 setState 调用不更新状态
【发布时间】:2018-12-08 03:47:45
【问题描述】:

我有一个选择行为不端的 React setState 调用,我不知道发生了什么。我想我已经把它缩小了一点——这是有问题的方法:

  setShowDeleteEventModal = (value) => {
    console.log('dude', value); //logs true
    this.setState(() => ({ showDeleteEventModal: value }), () => {
      console.log('hey', this.state); //logs state showing 'showDeleteEventModal: false'
    });
  };

到目前为止我做了什么:

检查它是否是异步的 - 它不是,基于回调函数中出现的问题,尽管我也使用了 setTimeout 来检查它; 确保我已正确声明状态; 检查我的变量的拼写,包括使用 Find 来确保它们都显示在相同的拼写下; 检查值的类型以防它是一个字符串 - 它是一个布尔值; 重写了整个实现。

期望的行为:showDeleteEventModal 在 setState 调用后显示为 true。 实际行为:没有。

我从子组件中的按钮 onClick 调用此方法,但由于“dude”和“true”出现在屏幕上,我知道它正在进入这里。 showDeleteEventModal 是一个控制是否显示模式的开关。

最让我困惑的部分是我在同一个文件中有一个非常相似的设置,它可以完美地工作。这是另一种方法:

setShowOnMap = (value) => {
  this.setState(() => ({ showOnMap: value }));
};

这是来自子组件的按钮调用,其中传入了 prop:

<div className = "button background-red width15"
          onClick = {props.switchModals}
        >
          Remove this event
        </div>

switchModals = {
  () => {
    this.setShowDeleteEventModal(true);
    this.closeModal()
  }
}

整个文件在这里发布有点长,但希望这已经足够了,我只是错过了一些愚蠢的东西。

【问题讨论】:

    标签: javascript reactjs state setstate


    【解决方案1】:
    setShowDeleteEventModal = (value) => {
      console.log('dude', value); //logs true
      this.setState({ showDeleteEventModal: value }, () => {
        console.log('hey', this.state); //logs state showing 'showDeleteEventModal: false'
      });
    };
    

    尝试删除箭头函数调用,对于您的第一个参数,只需放置状态对象,就像上面一样

    【讨论】:

    猜你喜欢
    • 2021-01-28
    • 2021-06-02
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多