Я пытаюсь создать окно поиска, которое фильтрует результаты поиска во всплывающем окне, пока пользователь печатает. Пример моего кода выглядит следующим образом.
class Search extends React.Component {
constructor(props) { ... }
onInputClick() {
this.setState({...this.state, openResult: true});
}
onInputBlur() {
this.setState({...this.state, openResult: false});
}
render() {
return {
<div id='search'>
<Input onClick = {this.onInputClick} onBlur = {this.onInputBlur} />
<Results open={this.state.open} />
</div>
}
}
}
В компоненте реакции <Input />
я использую onClick и onBlur для <input />
. Следовательно, когда пользователь щелкает вход / выход, весь компонент <Search />
перерисовывается и на основе значения this.state.open
графический интерфейс отображает / скрывает результаты.
Теперь моя проблема в том, что я объявляю let input$ = Rx.fromEvent(ref, 'input')
в компоненте <Input />
. Как я могу отфильтровать результаты в <Result />
?
Одно из моих решений - использовать Redux вот так input$.subscribe(data => updateReduxState(data));
. Когда состояние изменяется, компонент <Result />
перерисовывается.
Во-первых, это правильно? Во-вторых, это перегиб / переобучение? Слишком сложно использовать Redux + Rxjs таким образом.