我在React中制作了一个3210组件,当您在文本框中键入内容时,它会显示建议完成的下拉列表。点击一个建议应该触发一个回调,并且当文本框失去焦点时下拉应该消失。问题是,onBlur
事件的文本框中触发之前的onClick
事件的建议,因此发生的事情是:延迟Blur回调
- 点击项目
- 文本框失去焦点=>
this.setState(this.getInitialState())
- 组件重新排列,因为状态已被清除而没有任何建议框
- 点击事件落在建议项目曾经是的空白处
什么是解决这个问题的最佳方法,而不是像onBlur={setTimeout(() => this.setState(this.getInitialState()), 100)}
这样的破解?
可能最好在这里复制/粘贴代码的一部分,因为该链接的内容可能会改变。 – Jacob
@jacob将链接更改为确切的提交哈希。 –