繁体   English   中英

反应setState调用不更新状态

[英]React setState call not updating state

我有一个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进行了检查; 确保我正确声明了状态; 检查我的变量的拼写,包括使用“查找”以确保它们全部以相同的拼写显示; 检查值的类型(如果它是字符串)-它是一个布尔值; 重写了整个实现。

所需的行为:在setState调用之后,showDeleteEventModal显示为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()
  }
}

整个文件需要一些时间才能在此处发布,但是希望这足够了,我只是想念一些愚蠢的东西。

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

尝试删除箭头函数调用,因为您的第一个参数只是放了state对象,就像上面的一样

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM