我正在使用自动完成功能的搜索组件,我遇到了一些奇怪的行为。该组件由一个输入(SearchInput
)和一个提前输入结果列表(SearchResultWrapper
)组成。反应onClick事件没有被拿起
点击提前输入结果应该填充选定结果的SearchInput
字段并隐藏提前输入结果。失去对该领域的关注也应该隐藏结果。
示例代码可以在这里找到:https://jsfiddle.net/chez/h22qfx45/。
当您在closeResults
函数中发表评论时,会出现问题,该函数负责更改组件的状态以隐藏提前输入结果。当此代码被激活时,SearchResult
的onClick
处理程序不再被React拾取。
显然有一个基本概念我在这里失踪。 React是否将其事件侦听器与SearchResult
组件断开连接,因为它是隐藏的?
你有一个竞争条件。将'closeResults'改为'setTimeout(()=> this.setState({resultsOpen:false}),200);'观察它。我猜你在点击注册之前隐藏了元素(请记住,浏览器在触发点击事件之前会移除焦点)。我现在没有时间进一步研究它,但也许有帮助。 – ivarni
如果您可以发布最令人困惑的代码或您认为最重要的代码部分,那将会很不错。 – HoldOffHunger