从仓库根目录运行现有应用:
打开 React Playground 的 #checkout 或 Next.js Playground 的 /checkout。两处复用同一业务流程,不是电商后端模板。
Pinia 用库存、偏好、购物车和结算四个 Store 划分职责。Getter 推导总额和可提交条件,Action 负责校验、pending/error 状态和库存修改。独立摘要读取同一个购物车。跨 Store Getter 解析所属实例;异步业务服务保留显式依赖,不依赖全局 active Pinia。
Zustand 对照使用一个独立 vanilla creator、显式派生读取和不可变更新。两边复用同一表单、整数分价格、数量限制和模拟提交请求。四 Store 拆分和单 creator 都不是另一库必须遵循的结构。示例展示业务组织方式,不用于性能排名。
只有 Pinia 一侧演示现有持久化和 DevTools 插件。SPA 将配送偏好存到 localStorage,Next 使用白名单请求 Cookie 适配器;这里不做等价持久化、SSR 或 middleware 排名。
Cookie 的 pick 过滤恢复和保存的字段,不会从 RSC props 中删去原始白名单 Cookie。不要把秘密或地址写进演示 Cookie。生产环境需要服务端库存与订单校验,以及请求幂等。
根 Provider 在导航和 router.refresh() 时保留客户端状态,整页刷新会重建未持久化的购物车和库存。Provider 卸载本身不销毁资源。onStoreDebug 仅用于开发,追踪见已有 #diagnostics,不用于生产遥测。
业务测试使用真实 Action,覆盖失败重试、共享状态、实例隔离、持久化字段选择和 SSR 快照。现有浏览器探针覆盖等价 SPA 输入和 Next 请求/hydration 流程:
先构建包和两个 Playground,再启动生产服务。脚本默认连接 http://127.0.0.1:4173 的 React preview 和 http://127.0.0.1:4174 的 Next 服务。测试准备见真实 Store 测试。