Мне нужен совет о том, где выполнять фильтрацию данных для достижения наилучшей производительности. Допустим, я получаю большой массив продуктов с одной конечной точки удаленного API и категорий продуктов с другой конечной точки. Я храню их в состоянии Redux
, а также сохраняю в базе данных Realm
, чтобы они были доступны для автономного использования.
В моем приложении Stack.Navigator
содержит 2 экрана: ProductCategories
и ProductsList
. Когда вы нажимаете категорию , она выводит вас на экран с продуктами , которые подпадают под эту категорию . В настоящее время я выполняю фильтрацию данных прямо внутри своего компонента, насколько я понимаю, он срабатывает каждый раз при визуализации компонента, и я подозреваю, что такой подход замедляет работу приложения. Так что мне было интересно, есть ли лучший способ сделать это? Может быть, отфильтруйте данные для каждой категории заранее, когда приложение загружается?
Мой код выглядит следующим образом:
const ProductCategories = (props) => {
const isFocused = useIsFocused();
useEffect(() => {
if (isFocused) {
setItems(props.productCategories);
}
}, [isFocused]);
return (
...
);
};
const mapStateToProps = (state) => ({
productCategories: state.catalog.productCategories,
});
const ProductsList = (props) => {
const isFocused = useIsFocused();
const productsFilteredByCategory = props.products.filter((product) => {
return product.category === id;
});
useEffect(() => {
if (isFocused) {
setItems(productsFilteredByCategory);
}
}, [isFocused]);
return (
...
)
const mapStateToProps = (state) => ({
products: state.catalog.products,
});