修改购物车数量的 mutation 返回成功,响应中 qty 已是 3,刷新页面后也正确;只有当前界面仍显示 1。这个证据把范围缩到前端状态。
先看客户端缓存如何识别 CartItem。若查询返回的对象缺少稳定 ID,或 type policy 使用了错误 keyFields,Apollo 可能把新对象与旧对象当成两条记录。mutation 也可能没有返回页面实际读取的字段,导致缓存无法覆盖。
三种更新方式
- 让 mutation 返回购物车组件需要的完整字段;
- 在 update 函数中按稳定标识更新缓存;
- 对关键操作执行一次精确 refetch,而不是清空全部缓存。
若 mutation 响应本身就是旧数据,再回到 Magento Resolver、Cart ID 和后端缓存排查。修复后连续执行加数量、删商品、应用优惠码,不刷新页面也应与服务端结果一致。

