我最近遇到了一个有趣的情况,当涉及到react渲染方法时。我有一个简单的习惯
Select
类似于HTML的组件
<select>
元素。它将打开选项的下拉列表,当选择某个选项时:
a)设置下拉列表
isVisible
状态为
false
.
b)触发
onChange
事件。
我遇到的问题是关闭下拉菜单
立即
选择一个选项后。关闭下拉列表应异步执行,而不是等待
一次改变
完成。我认为这不应该是个问题,因为我们可以调用
一次改变
中的方法
setState
回拨。
handleOnClick(value) {
this.setState({
isVisible: false
}, () => {
this.props.onChange(value);
});
}
这并没有按预期工作。单击某个选项后,我的下拉列表将保持打开状态,直到我的
一次改变
操作已完成。我现在的理论是
一次改变
正在导致多个状态更改,而这反过来又会破坏
render
我的方法
选择
组件。为了检验这个理论,我把
this.props.onChange(value);
在一个
setTimeout
. 即使有一段时间
0
这个问题似乎已经解决了。不幸的是,这感觉很糟糕。我很想更好地了解正在发生的事情,以及一个更优雅的解决方案。