【发布时间】:2020-08-01 07:30:41
【问题描述】:
我需要有关在何处执行数据过滤以实现最佳性能的建议。假设我从远程 API 的一个端点接收大量 产品,从另一个端点接收 产品类别。我将它们存储在Redux 状态,并且还保存到Realm 数据库,以便它们可以离线使用。
在我的应用程序中,我有一个包含 2 个屏幕的 Stack.Navigator:ProductCategories 和 ProductsList。当您按下一个类别时,它会将您带到屏幕上,其中包含属于该类别的产品。目前,我在我的组件内部执行数据过滤,据我了解,每次渲染组件时它都会触发,我怀疑这种方法会减慢应用程序的速度。
所以我想知道是否有更好的方法来做到这一点?也许在应用加载时提前过滤每个category的数据?
我的代码如下:
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,
});
【问题讨论】:
标签: arrays reactjs react-native react-redux react-navigation