Hydrogen 的 CartForm 提交后购物车没变怎么排查
现象#
点击 CartForm 的加购按钮后页面整页刷新,cart.totalQuantity 仍是 0;DevTools 里 POST /cart 返回 200,但响应体是整页 HTML 而不是 JSON。
原因#
- CartForm 依赖 /cart 路由导出的 action,文件缺失时请求落到根路由并返回 HTML
- inputs 结构不对:LinesAdd 需要 lines 数组,每项含 merchandiseId
- /cart 由 createCartServerHandlers() 接管,旧 action 未删会重复处理
- 变体 ID 填了纯数字而非 gid 形式,cartLinesAdd 返回 userErrors 但被忽略
处理步骤#
- 看 DevTools 里 POST /cart 的 Content-Type 是否为 text/html
- 确认
app/routes/cart.tsx导出了action()而不是 loader - action 写成
CartForm.ACTIONS.LinesAdd,不要用字符串字面量 - inputs 用
{lines: [{merchandiseId, quantity}]},并打印userErrors - 2026-10 改用
useCartForm(),删掉自建 action 交给处理器
验收标准#
加购后 /cart 返回 JSON,购物车角标数量立即加一,购物车页的行项目与所选变体一致。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。