Ich arbeite an einer Suchkomponente mit Auto-Vervollständigung-Funktion und ich bin in ein seltsames Verhalten. Die Komponente besteht aus einem Eingang (SearchInput
) und einer Liste von Typ-Ahead-Ergebnissen (SearchResultWrapper
).Reagieren onClick-Ereignis wird nicht abgeholt
Durch Klicken auf ein Schnelladressierungsergebnis wird das Feld SearchInput
mit dem ausgewählten Ergebnis ausgefüllt und die Schnelladressierungsergebnisse ausgeblendet. Wenn Sie den Fokus auf das Feld verlieren, sollten Sie auch die Ergebnisse ausblenden.
Beispielcode finden Sie hier: https://jsfiddle.net/chez/h22qfx45/.
Das Problem tritt auf, wenn Sie in der closeResults
-Funktion kommentieren, die für das Ändern des Status der Komponente verantwortlich ist, um die vorausgehenden Ergebnisse auszublenden. Wenn dieser Code aktiviert ist, wird der onClick
-Handler für den SearchResult
nicht mehr von React übernommen.
Es gibt offensichtlich ein grundlegendes Konzept, das ich hier vermisse. Hebt React das Trennen seiner Ereignis-Listener von der Komponente SearchResult
auf, da diese ausgeblendet ist?
Sie haben ein Rennen-Zustand ändern. Ändern Sie Ihre 'closeResults' in' setTimeout (() => this.setState ({resultsOpen: false}), 200); 'um es zu beobachten. Ich schätze, Sie verstecken das Element, bevor der Klick registriert wird (denken Sie daran, dass der Browser den Fokus entfernt, bevor er ein Klickereignis auslösen kann). Ich habe momentan keine Zeit, es genauer zu betrachten, aber vielleicht hilft es. – ivarni
Es wäre schön, wenn Sie den Teil des Codes veröffentlichen könnten, der am verwirrendsten ist oder den Sie für den wichtigsten halten. – HoldOffHunger