Я пытаюсь настроить компонент автозаполнения:
const tags = [ 'foo', 'bar' ];
export default class AutoComplete extends React.Component {
constructor (props) {
super(props)
this.state = {
value: '',
}
}
onSubmit() {
console.log("SUBMITTED");
console.log(this.state.value);
this.setState({value: ''});
}
render() {
console.log("STATE");
console.log(this.state);
return (
<ReactAutocomplete
items={tags}
shouldItemRender={(item, value) => item.toLowerCase().indexOf(value.toLowerCase()) > -1}
getItemValue={item => item}
renderItem={(item, highlighted) =>
<div
key={item}
style={{ backgroundColor: highlighted ? '#eee' : 'transparent'}}
>
{item}
</div>
}
value={this.state.value}
onChange={e => this.setState({ value: e.target.value })}
onSelect={value => { this.setState({ value });}}
onSubmit={this.onSubmit.bind(this)}
/>
)
}
}
Все работает нормально, и мне нравится, что если я нажму клавишу ввода, автозаполнение автоматически заполнит поле ввода наиболее подходящим тегом.Однако я хотел бы снова нажать клавишу ввода, а затем вызвать функцию (скажем, onSubmit
) и сохранить этот тег где-нибудь как отправленный тег.Это, похоже, не работает, так как нажатие клавиши Enter теперь подключено к onSelect
- как я могу решить эту проблему?
PS: я использую этот компонент автозаполнения: React-Autocomplete Пример JS Bin