Ich schreibe eine Autovervollständigungsfunktion mit React, und wenn der Benutzer ein Element in der Liste auswählt, möchte ich die Eingabe aktualisieren. Mein Problem ist, wenn der Eingang den Fokus verliert. Ich möchte, dass das Menü verschwindet, wenn der Benutzer das Menü nicht auswählt. Momentan basiert das Anzeigen des Menüs auf einer Eigenschaft namens showDropDown. In der Render-Methode habe ich, wenn ShowDropDown es baut die Menü-Komponenten. Es scheint, dass die Rendermethode vor den Klicklistenern auf den Menüelementen aufgerufen wird und sie entfernt, bevor onClick aufgerufen wird.Fokus in Reagieren verwalten
handleOnBlur =() => {
this.setState({ showDropDown: false });
};
handleOnFocus =() => {
this.setState({ showDropDown: true });
};
handleRenderSubComponents = (options) => {
...
return options.map((option) => {
...
return (<li key={displayString} className={className}>
<span onClick={() => {this.handleOnItemSelect(option, fieldInput);}} style={{ cursor: 'pointer' }}>
{displayString}
</span>
</li>);
});
};
render() {
...
return (
<div className={className}>
<div>
<input
style={{ position: 'relative' }}
disabled={disabled}
ref={(inputElem) => {this.inputElem = inputElem;}}
valueLink={{ value: this.state.value, requestChange: (value) => this.handleOnChange(value) }}
onBlur={this.handleOnBlur}
onFocus={this.handleOnFocus}
onKeyUp={this.handleOnKeyUp}
/>
</div>
<ul className="dropdown-menu dropdown-menu-justify" style={dropDownStyle} >
{showDropDown && this.handleRenderSubComponents(options)}
</ul>
</div>
);
}
Was ich tun muß, ist nur Menü ausgeblendet, wenn der Eingang des Fokus verliert, aber der Fokus ist nicht im Menü
Wo ist der Code, der auf dem 'showDropDown' Zustand abhängt? –
Nicht sicher, wie das auf der Kopie verpasst wurde. Zurück in hinzugefügt – user1760412