You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:09:03