我正在使用React,Redux开发一个电子商务网站,该网站显示了一些产品,这些产品可以通过带有某些选项的选择框进行排序或过滤。
我有两种过滤产品的方法:
1-每次从服务器获取产品并检查获取功能,例如:
products = products.filter(p =>
options.find(o => p.categories.find(category=> category=== o))
);
2-提取产品一次,然后创建一个缩减器,该缩减器在每次选择了不同的选项时都会过滤产品
在最佳实践和性能方面哪个更好?
更新:获取功能
const fetchProducts = (categories) => {
fetch('products API')
.then(res => {
let { products } = res.data;
if (!categories && categories.length > 0) {
products = products.filter(p =>
categories.find(category => p.categories.find(size => size === category))
);
}
return dispatch({
type: FETCH_PRODUCTS,
payload: products
});
})
.catch(err => {
console.log('Could not fetch products);
});
};
答案 0 :(得分:3)
这取决于您正在构建的应用程序。如果您要处理大型数据集,则应首选服务器端过滤。
原因是客户端筛选可能会导致许多问题。例如,即使服务器上的内容已更新,客户端也可能向用户显示以前缓存的数据。
此外,您可以实施节流和反跳之类的技术来提高应用程序的效率。
简而言之,如果您的数据集很小,则可以继续进行客户端过滤。但是为了安全起见,我更喜欢服务器端过滤。