为了给用户更好的反馈,基于他们的行为,我们经常需要保留诸如“正在加载购物车”、“获取用户地址失败”等信息。 对于每个单独的应用程序状态,我们必须将元数据放在旁边。 分别用于购物车、用户信息、产品数据等。 在所有这些地方手动实现这个逻辑会导致在整个代码库中针对同一问题有不同的解决方案。 这就是在 spartacus 中创建 loaderReducer 的原因。 这个reducer 标准化了整个状态树(state tree)中的元数据处理。 您可以在树的任何深度、任何需要的地方使用它。 除了reducer,我们还提供 actions 和 selectors 的实用程序。

一个例子:

在 app.module.ts 里插入如下代码:

export class AppModule { constructor(private config: DebugConfig,private actions$: Actions){// console.log('Jerry config: ', this.config);this.actions$.pipe(ofType(CartActions.LOAD_CART),map((action: CartActions.LoadCart) => action.payload),tap((data) => console.log('Jerry cart: ' , data))).subscribe();}}

运行时效果:

Error 是经常放置在 NgRx Store 中的 AJAX 调用状态之一。 其他状态包括 Loading,Loaded 和 Success 等等。

interface ResultState {result: Result,error: string|null,isLoading: boolean,isLoaded: boolean,
}

为什么将这些状态放入 Store? 嗯,这通常是由用户体验决策驱动的。例如,用户应该能够在等待调用完成时看到某种进度指示器,或者如果调用结果出错时,能看到错误消息。

SAP Spartacus 采用了统一的工具 reducer,名为 loaderReducer,来为 entity 加载添加不同的标志位:

Higher order reducer that adds generic loading flag to chunk of the state. It utilizes “loader” meta field of actions to set specific flags for specific action (LOAD, SUCCESS, FAIL, RESET)

将通用加载标志添加到状态块的高阶 reducer. 它利用“加载程序”元操作字段来设置特定操作的特定标志(加载、成功、失败、重置)

一旦某个 entity 加载成功之后,首先触发高阶 reducer:

注意这行语句:

return Object.assign(Object.assign({}, state), { value: reducer ? reducer(state.value, action) : action.payload, loading: false, error: false, success: true });

显式将 state 里的 loading 字段硬编码为 false.这样无需应用程序手动修改 loading 标志位了。

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

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

  1. SAP Spartacus Loader Meta Reducer学习笔记 - loaderReducer

    链接:https://sap.github.io/spartacus-docs/loader-meta-reducer/#creating-actions To give better feedbac ...

  2. SAP Spartacus 如何借助env-cmd 实现 B2B 和 B2C 功能启动的无缝切换

    在之前的 SAP Spartacus 标准开发中,每次我从 Github 上 clone 了最新的代码后,必须手动修改 environment.ts 里的配置值,将 CX_BASE_URL 和 b2b ...

  3. SAP Spartacus Customizing Meta Tags

    用于元标记的内容尽可能由后端(运行时)数据驱动.例如,产品详细信息页面的图像标签使用主产品图像.另一个示例是产品详细信息页面的标题,它由产品标题.(第一)类别和品牌构成. 如果要进一步自定义元标记的创 ...

  4. SAP Spartacus 因为 refresh token 刷新令牌过期后显示用户重新登录页面的逻辑

    在 auth.interceptor.ts 里判断,token 是否过期: isExpiredToken: 通过服务器端返回的错误类型判断. 如果确实过期了,首先调用 handleExpiredTok ...

  5. SAP Spartacus SSR 模式下 index.html 页面渲染 fallback 到 CSR 之后的执行逻辑

    入口: 当SSR页面不能及时返回时,我们返回index.html: CSR 应用程序 CSR 应用会返回"Cache-Control: no-store"响应头.这将通知外部缓存系 ...

  6. SAP Spartacus CMSService 的调用栈以及 meta 标签的生成过程

    SAP Spartacus 有多达 31 个 AppInitiators: SeoModule 是其中之一. initSeoService 方法里,执行 SeoMetaService 的 init 方 ...

  7. SAP Spartacus index.html里的meta标签

    meta标签用来描述页面的元数据. 我把index.htmll里的meta标签注释掉,仍然能够正常工作,这是为什么呢? 后台url维护在Environment.occBaseUrl字段里: 注入Con ...

  8. Media Query在SAP Spartacus里的用途

    Media queries are useful when you want to modify your site or app depending on a device's general ty ...

  9. SAP Spartacus 中的 HTML 标签

    HTML Tags HTML 标签,尤其是元标签,允许搜索引擎.社交平台和机器人在其平台中使用页面元数据. 通过仔细准备元标记,并定期评估它们的值,您可以提高页面的排名.点击率和可用性. 所有这些都会 ...

最新文章

  1. 神州数码与神州控股、神州信息共同主办首届技术年会,透露出什么信号?
  2. Java中创建线程需要使用的类_如何通过使用Java中的匿名类创建线程?
  3. Tensorflow Day16 Autoencoder 實作
  4. 如何做到服务器虚拟化_尽可能地做到无服务器,但不止于此
  5. 计算机知识点小报,制作电脑小报的教案
  6. 1009. 说反话 (20)
  7. Eigen官网教程(7)geometry几何模块的实践
  8. java 多线程4: java线程的优先级
  9. 开启人才进阶之旅,鲲鹏开发者技术沙龙点燃计算行业激情
  10. ktor HTTP API 练习
  11. 网上流行的护眼背景对照码,十六进制,RGB值
  12. Apache Spark RDD 论文(中文翻译)
  13. 省一级计算机ppt,江苏省计算机一级PPT课件.ppt
  14. CultureInfo 类中需要的【区域性名称】查询
  15. sled11 sp2 opensuse zypper usage fr net
  16. JavaMail API 1.4.7邮件发送
  17. Docker02-容器管理
  18. PMBOK第七版免费下载
  19. 合格的嵌入式开发者应掌握的技能大全
  20. 分享灵动微国产32位MCU全新MM32F系列

热门文章

  1. 浅谈StringBuilder
  2. FTP客户端的基本使用---Linux学习笔记
  3. 黑客开始利用云计算暴力破解密码
  4. 《安卓开发必知的50个技巧》读书笔记
  5. 2016/12/3-问鼎杯线上赛1-1-Misc
  6. POJ 3225 线段树+lazy标记
  7. Contracts for Java
  8. 【观点】风雨20年:我所积累的20条编程经验
  9. centos7 yum 安装lnmp
  10. SQL语句中LEFT JOIN、JOIN、INNER JOIN、RIGHT JOIN的区别?