我正在使用自動完成功能的搜索組件,我遇到了一些奇怪的行爲。該組件由一個輸入(SearchInput
)和一個提前輸入結果列表(SearchResultWrapper
)組成。反應onClick事件沒有被拿起
點擊提前輸入結果應該填充選定結果的SearchInput
字段並隱藏提前輸入結果。失去對該領域的關注也應該隱藏結果。
示例代碼可以在這裏找到:https://jsfiddle.net/chez/h22qfx45/。
當您在closeResults
函數中發表評論時,會出現問題,該函數負責更改組件的狀態以隱藏提前輸入結果。當此代碼被激活時,SearchResult
的onClick
處理程序不再被React拾取。
顯然有一個基本概念我在這裏失蹤。 React是否將其事件偵聽器與SearchResult
組件斷開連接,因爲它是隱藏的?
你有一個競爭條件。將'closeResults'改爲'setTimeout(()=> this.setState({resultsOpen:false}),200);'觀察它。我猜你在點擊註冊之前隱藏了元素(請記住,瀏覽器在觸發點擊事件之前會移除焦點)。我現在沒有時間進一步研究它,但也許有幫助。 – ivarni
如果您可以發佈最令人困惑的代碼或您認爲最重要的代碼部分,那將會很不錯。 – HoldOffHunger