【发布时间】: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