Я пытаюсь создать фильтр с mapPropsStream
, но он не работает.Это мой код:
const BaseComponent = ({ onSearch, data }) => (
<div>
<input onChange={({ target }) => onSearch(target.value)} />
<br/>
<ul>
{data.map((item) => /* render list */)}
</ul>
</div>
);
const DataList = mapPropsStream((props$) => {
const { handler: onSearch, stream: onSearch$ } = createEventHandler();
const filteredData$ = Observable.merge(
onSearch$.switchMap((query) =>
props$.pluck('data').filter((item) =>
item.title.includes(query) ||
item.body.includes(query) ||
item.event.includes(query)
)
),
props$.pluck('data') // props$.map(({ data }) => data)
).startWith([]);
return props$.combineLatest(
filteredData$,
(props, data) => ({
...props,
data,
onSearch
})
);
})(BaseComponent)
export default DataList;
Я не знаю, если это правильный способ фильтрации данных, если нет, то это правильный путь, имея в виду, что мои данные хранятся в избыточном ?, еслида, что не так с моим кодом?
Спасибо