React Context API实现购物车数据加载及商品附加项、选项整合问题
购物车数据整合实现
你目前返回的结构存在多余数组嵌套,且三个数组独立没有合并,修改后的函数如下:
const getProdutos = () => { const ProdsCart = ProdutosCart.map(cartItem => { // 提取查询结果的实际数据,去除多余的数组嵌套 const baseProduct = getProduto(cartItem.ID).flat(2)[0] const selectedOptions = getProdutoOpcoesChecked({ groupID: cartItem.idOpcoesGroup, idx: cartItem.idOpcoes }).flat(2) const selectedAddons = getProdutoAdicionaisChecked({ groupID: cartItem.idAdicionaisGroup, idx: cartItem.idAdicionais }).flat(2) // 合并所有属性得到完整的购物车商品对象 return { ...baseProduct, Qtd: cartItem.Qtd, obs: cartItem.obs, ProdutoOpcoes: selectedOptions, ProdutoAdicionais: selectedAddons } }) return ProdsCart }
如果你的查询函数返回的嵌套层级和示例一致,用flat(2)可以直接打平多余的两层嵌套,也可以根据实际返回的层级调整参数,或者直接按索引取[0][0]也可以实现同样效果。
数据加载方案选择
- 若商品、附加项组、选项组属于全站多页面复用的基础数据,且更新频率低,放在产品Context中全局管理是最佳实践,可避免重复请求,提升渲染效率。
- 若上述数据更新频率高(如价格、可选配置实时调整),或者仅在购物车场景需要关联查询,建议直接请求后端接口获取聚合后的完整购物车数据,无需前端自行拼接,能保证数据一致性,降低逻辑出错概率。
内容的提问来源于stack exchange,提问作者Matheus Martins
相关产品推荐
相关产品推荐

