SAP Spartacus 成功读取 Cart 之后,如何将 payload 插入全局 state

简介: SAP Spartacus 成功读取 Cart 之后,如何将 payload 插入全局 state

简而言之:通过 cart reducer 配合 ngrx-store.js 框架代码。

搜索关键字 LoadCartSuccess:image.png运行时断点触发:image.png上下文:cartConnector 的回调里。image.png根据关键字 LOAD_CART_SUCCESS 继续搜索:image.png我们明确一点:action 在 reducer 里进行状态迁移。

根据这个关键字,很快就搜索到了 LOAD_CART_SUCCESS 所在的状态迁移:image.png可以看到,http.js 上下文里,调用 observer 的 next 方法,将从 Commerce Cloud 后台返回的 API response,通知其他观察者image.pngbody 字段里才是真正的 payload:image.png这里使用 .body, 将 payload 解析出来:image.png在这段代码里,进行 conversion:image.png此处触发 Spartacus team 开发的 mergeMap callback:把 HTTP.js 返回的 response,包装成 LoadCartSuccess 的强类型 payload:image.png包装完之后的强类型 response:image.png最后 Spartacus cart reducer 被调用:image.pngreducer 执行完毕后,我们就能在 ngrx-store.js 的 combination 函数里的变量 nextState, 看到最新的 cart memory value:image.png


相关文章
|
1天前
|
监控 数据挖掘 定位技术
Spartacus 测试,后台修改 product price 数据后,添加到 Cart 时,会带出来最新的价格吗
Spartacus 测试,后台修改 product price 数据后,添加到 Cart 时,会带出来最新的价格吗
15 2
|
1天前
|
设计模式 API 数据处理
Spartacus 在 PDP 页面点击 Add to Cart 之后,读取最新 product 数据的设计
Spartacus 在 PDP 页面点击 Add to Cart 之后,读取最新 product 数据的设计
12 2
|
2天前
|
缓存 数据处理 UED
Spartacus cart item remove 不会进入到 59 行这个分支
Spartacus cart item remove 不会进入到 59 行这个分支
6 0
|
2天前
|
存储 缓存 数据管理
Spartacus cart list item 删除的实现原理
Spartacus cart list item 删除的实现原理
4 0
|
2天前
|
前端开发 搜索推荐 JavaScript
Spartacus Cart item 点击了 remove 之后 HTTP Delete 请求的触发逻辑 - Adapter
Spartacus Cart item 点击了 remove 之后 HTTP Delete 请求的触发逻辑 - Adapter
7 0
|
2天前
|
开发者 UED
Spartacus cart 点了 remove 之后的 HTTP Delete 请求是怎么触发的
Spartacus cart 点了 remove 之后的 HTTP Delete 请求是怎么触发的
9 0
|
2天前
|
前端开发 搜索推荐 开发者
Spartacus empty cart 页面的显示逻辑
Spartacus empty cart 页面的显示逻辑
9 0
|
2天前
|
API 前端开发 JavaScript
Spartacus 中 saved cart 的 occ API 请求
Spartacus 中 saved cart 的 occ API 请求
18 0
Spartacus 中 saved cart 的 occ API 请求
|
2天前
|
JSON JavaScript 数据格式
Spartacus Add To Cart 按钮的技术实现
Spartacus Add To Cart 按钮的技术实现
27 0
Spartacus Add To Cart 按钮的技术实现
|
2天前
|
JSON 开发者 数据格式
关于 SAP Spartacus LandingPage2Template 区域的 layout 设计实现
关于 SAP Spartacus LandingPage2Template 区域的 layout 设计实现
28 0