每日整理真实提问 356 个问题 · 726 个回答 需要系统性的技术文档?看 Shopify 技术百科 1000 篇 → 400-873-8117
已解决 提问于 1 个月前

加购后购物车抽屉不更新数量

2 个回答 3,377 次浏览 主题与 Liquid 最后活跃 1 个月前
51

用 sections 接口渲染购物车抽屉,加购后抽屉打开了,但里面的商品数量和金额还是加购前的。

L
Lily提问者
DTC 品牌独立站运营负责人
1 个月前提问 · 已收到 2 个回答

2 个回答

已采纳 · 提问者确认解决
26

先把判断放在前面:/cart/add.js 只更新购物车服务端状态,不会自动重渲染页面片段,抽屉需要显式请求新的 section HTML。

1处理顺序

  1. 加购成功后请求 /cart/add.js 的返回里带 sections,在请求参数中声明 sections: 'cart-drawer,cart-icon-bubble'。
  2. 用返回的 HTML 替换对应容器:document.querySelector('#cart-drawer').innerHTML = data.sections['cart-drawer']。
  3. 替换后重新绑定抽屉里的事件,直接改 innerHTML 会丢掉原有监听。
  4. 抽屉里的数量和顶部购物车角标要一起更新,否则两个数字不一致。
  5. 并发加购时加一个请求锁,避免两次替换互相覆盖。
验收:连续加购多件商品,抽屉数量、金额、顶部角标三处同步更新。
风 风格技术团队 回答于 1 个月前
17

更稳的做法是加购后调一次 fetch('/?sections=cart-drawer') 拿整段 HTML,不依赖 add.js 的 sections 返回,兼容性更好,代价是多一次请求。

泽 阿泽 · 前端工程师 · 1 个月前

你的处理方式是什么?

写下你实际验证过的步骤,比「我也有这个问题」有用得多。当前版本为静态展示,提交后会由团队整理并回复。

描述你遇到的现象、店铺环境(主题 / 套餐 / 应用)、已经试过哪些操作……
我要单独提问 工作日 10 分钟内回复,可直接加微信 fenggejishu