Пробовал сделать фильтрацию в Redux.
Пока наилучшим решением вижу делать фильтрацию так же, как это делается в обычном React.js без Redux. Т.е. в дочерний компонент передается родительская функция, в которой изменяется state родительского компонента.
Пришел к выводу, что редьюсеры здесь не стоит использовать, т. к. состояние store не меняется. К тому же, если его изменить, то не получиться отобразить один список в нескольких компонентах с разной фильтрацией.
Пример моего решения написан ниже. Я хотел узнать - является ли такой подход к фильтрации правильным в Redux или есть лучше, правильней?
Родительский компонент (контейнер):handleFilterUpdate(filterType, filterValue ){
this.setState({ filterType: filterType, filterValue: filterValue });
}
render () {
const listItems = this.props.listItems;
return (
<div>
<MyFilter onFilterUpdate={this.handleFilterUpdate.bind(this)} />
<List items={getFilteredItems(listItems, this.state.filterType, this.state.filterValue)}/>
</div>
);
}
Дочерний компонент MyFilter:handleClick(e) {
this.props.onFilterUpdate('filter_type', this.refs.filterInput.value);
}
render() {
return (
<div>
<input type="text" ref = "filterInput"/>
<button onClick={this.handleClick.bind(this)}>Apply filter</button>
</div>
);
}