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

搜索关键字 LoadCartSuccess:

运行时断点触发:

上下文:cartConnector 的回调里。

根据关键字 LOAD_CART_SUCCESS 继续搜索:

我们明确一点:action 在 reducer 里进行状态迁移。

根据这个关键字,很快就搜索到了 LOAD_CART_SUCCESS 所在的状态迁移:

可以看到,http.js 上下文里,调用 observer 的 next 方法,将从 Commerce Cloud 后台返回的 API response,通知其他观察者。

body 字段里才是真正的 payload:

这里使用 .body, 将 payload 解析出来:

在这段代码里,进行 conversion:

此处触发 Spartacus team 开发的 mergeMap callback:把 HTTP.js 返回的 response,包装成 LoadCartSuccess 的强类型 payload:

包装完之后的强类型 response:

最后 Spartacus cart reducer 被调用:

reducer 执行完毕后,我们就能在 ngrx-store.js 的 combination 函数里的变量 nextState, 看到最新的 cart memory value:

更多Jerry的原创文章,尽在:“汪子熙”:

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

  1. SAP Spartacus批量读取产品的逻辑

    ProductEffects.getMany: 需要读取17个产品的数据: getMany调用adapter的loadMany: scopedDataWithUrls: 这里第一次看到了PRODUCT ...

  2. SAP Spartacus 用户请求中的 current id 是从哪里来的

    从 SAP Spartacus 成功登录之后,能在 Local Storage 里观察到 userId 为 current: 这个 current id 从哪里来的呢?在 Spartacus 应用初始 ...

  3. SAP Spartacus 的基于outlet 的页面扩展

    outlet 是 SAP Spartacus 提供 partners 一种将 custom UI 插入 Spartacus 标准 DOM 的一种手段. outlets get added for ea ...

  4. SAP Spartacus 读取 Cart 的原理分析

    App.module.ts 的源代码: export class AppModule { constructor(private config: DebugConfig,private actions ...

  5. 为什么 SAP Spartacus 4.0 源代码版本读取不到 CX_BASE_URL 环境变量的值?

    SAP Spartacus 4.0 源代码版本: 如下图所示,遇到了 404 错误: 错误的 url:可以看到端口号变成了 4200: http://localhost:4200/occ/v2/ele ...

  6. SAP Spartacus B2B User 页面的数据读取逻辑设计

    点击SAP Spartacus B2B的Users页面后: 触发selector: 看到user 列表: B2B user模块,从设计上说,位于Spartacus工程项目的feature-libs文件 ...

  7. 关于 SAP Spartacus Loader Meta Reducer 的用途 - loading 在 true 和 false之前切换的逻辑

    为了给用户更好的反馈,基于他们的行为,我们经常需要保留诸如"正在加载购物车"."获取用户地址失败"等信息. 对于每个单独的应用程序状态,我们必须将元数据放在旁边 ...

  8. 如何自行找出 SAP Spartacus 查询用户信息的 API Service 类

    成功登录 SAP Spartacus 之后,在 Chrome 开发者工具 Network tab 里能看到一条读取用户信息的网络请求: https://20.83.184.244:9002/occ/v ...

  9. SAP Spartacus 用户认证的实现

    文章目录 UserAuthModule Authentication Flow AuthService Storing Tokens and User Identifiers 用户认证的典型流程和包含 ...

最新文章

  1. mysql 日期_「5」学习MySQL日期与时间类型发现:要养成注重细节的习惯
  2. python试题for循环布尔值_Python自我修炼(升仙中....整数,布尔值,字符串,for循环)
  3. ios推送服务,php服务端
  4. dos中的for命令简单使用
  5. 【项目管理】上线切割计划实践
  6. 航空购票系统源码java_航空售票系统 - WEB源码|JSP源码/Java|源代码 - 源码中国
  7. 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段...
  8. batchplot放到哪个文件夹_如何整理文件夹?来看腾讯设计师的方法
  9. Victor and World(spfa+状态压缩dp)
  10. 用MediaPlayer record audio简例
  11. C# typeof()实例详解
  12. 【滤波跟踪】捷联惯导纯惯导解算matlab实现
  13. Ubuntu文件目录结构详解
  14. ExoPlayer之Extractor
  15. 先森请自重,小女子只卖身不卖艺
  16. 八、软考·系统架构师——架构设计
  17. 互联网晚报 | 10月31日 星期日 | 网易云音乐旗下首家酒吧落地上海;B站上线童年动画专区;英特尔发布第12代酷睿芯片...
  18. 使用对比学习处理大规模多模态单细胞数据
  19. 牛客练习赛52 B Galahad (树状数组)
  20. busybox的init

热门文章

  1. virtualbox 安装虚拟机(centos7) 并映射本地文件夹至虚拟机(增强工具)
  2. Java课堂测试01及感想
  3. 2016-7-4收藏夹接口
  4. javaweb入门笔记(4)-request和response
  5. Linux:环境变量
  6. 透过字节码分析java基本类型数组的内存分配方式。
  7. Linux 文件与目录管理+用户管理命令(详解+练习)
  8. 漂浮窗口拖动杂谈(续)
  9. 替换OWA通讯录方式的方法
  10. springboot 应用程序的文件检索描述