spartacus-storefront - 使用附加数据扩展 Spartacus NGRX 存储
问题描述
对于我们的 Spartacus 项目,我们需要在结帐时引入额外的数据属性:我们有这样的案例,用户需要为每个产品选择一种交付模式。
在理想的世界中,选择后,选定的交付模式将保存在 NGRX 商店和后端中,以保持此处定义的数据绑定原则:https ://sap.github.io/spartacus-docs/连接到其他系统/#component-data-binding
预期数据/用户流:
- 用户转到结帐和交付模式步骤
- 进行自定义 OCC 调用以加载每种产品支持的交付模式(取决于产品类型和进一步的客户特定逻辑)
- 显示购物车项目,并通过包含可用交付模式的下拉菜单进行增强
- 用户选择一种交付方式
- 选择的交付模式存储在 NGRX 商店的购物车条目中并保存在后端
- 新的购物车总数是根据所选交付模式的成本计算的
- 新的购物车总数存储在 NGRX 商店的购物车中并保存在后端
- 用户点击 continue 进入 Review Order Step
- 购物车项目与先前选择的交付模式一起列出
经过对现有代码的一些分析,我们deliveryMode
在orderEntry
. 这似乎在 spartacus 中的任何地方都没有使用,但可以通过遵循这个stackoverflow 答案和这个来使步骤 9 工作。
关于此流程的问题:
- 我们如何扩展 NGRX 商店?我们假设,可以只扩展外观(Active Cart Service),绕过存储并将信息保存在后端(在此处描述),然后从后端刷新存储。这个假设正确吗?如果是的话,那感觉很尴尬,因为我们需要重新加载整个商店只是为了包含新的
deliveryMode
属性orderEntry
- 我们如何挂钩到购物车总数的价格计算,以根据所选的交付模式更新总数?再说一次,我们如何才能将新的总金额带入商店?
Slack 频道中似乎有几个答案,但关于扩展 ngrx 商店的可用答案很少,即使对我们来说,这似乎是一项非常正常的任务.. :-/
任何想法、意见或支持将不胜感激。:-)
解决方案
这似乎是一件很难完成的事情,因为在 spartacus 中不支持每种产品的交付模式。但是一些想法:
您可以扩展核心 CartEntry 类(适配器、连接器、外观等)以包括添加到购物车的条目的交付模式。您可能需要全部更改以包括交付模式设置。所有这些都是公开的,因此您可以根据需要修改它们,包括商店。
利用多个购物车为每个购物车提供一个产品并以这种方式设置交付模式。但这在我看来会很麻烦。
就价格计算而言,我假设 OCC 调用返回总价格。对购物车条目的调用是否包括每个条目的交付模式成本?
推荐阅读
- ios - 如何在 XCode 中下载已删除的 iOS 模拟器?
- reactjs - ErrorBoundary 将当前内容替换为 fallbackRender 而不是将其添加到顶部
- regex - 从我的公式结果中删除最后一个特定字符
- java - 正则表达式从句子中获取金额不适用于一种情况
- sql - 按每组扩展缺失日期的数据
- reactjs - 编辑或删除文档时,Firestore 集合侦听器崩溃
- python - 创建取自数据框行的多条线图
- vb.net - 如何在 2gb 文件以上的 vb.net 中设置字节值
- php - 是否可以通过 IMAP 在特定电子邮件上设置自定义标志,然后过滤带有/不带有此自定义标志的电子邮件?
- excel - 从值表创建条形图时,为什么会遇到“找不到具有指定名称的项目”?