调用 CartEntryConnector 的 'update' 方法后获取 payload
Getting a payload after calling 'update' method of CartEntryConnector
我使用了 ActiveCartService 的 'updateEntry' 方法来更新购物车的条目。之后,来自 CartEntryEffects class 的 'updateEntry$' 效果被触发,返回了新的操作。
updateEntry$: Observable = this.actions$.pipe(
ofType(CartActions.CART_UPDATE_ENTRY),
map((action: CartActions.CartUpdateEntry) => action.payload),
concatMap(payload =>
this.cartEntryConnector
.update(payload.userId, payload.cartId, payload.entry, payload.qty)
// should be my logic with payload
.pipe(
map(() => {
return new CartActions.CartUpdateEntrySuccess({
userId: payload.userId,
cartId: payload.cartId,
});
}),
获取此有效负载的正确方法是什么?
或者我可以覆盖这个效果或添加我的逻辑吗?
这取决于您要对负载执行的操作。
如果您想在详细信息更新到 Commerce 之前对其进行处理,那么这通常由连接器和适配器处理。参见 https://sap.github.io/spartacus-docs/connecting-to-other-systems/
如果您想引用更新的条目并显示它,那么您可以通过 ActiveCartService 获取一个 Observable。例如,参见声明 cartEntry$: Observable<OrderEntry>
的 AddToCart 组件 (https://sap.github.io/spartacus/components/AddToCartComponent.html#source),然后在 ngOnInit() 中执行 this.cartEntry$ = this.activeCartService.getEntry(this.productCode)
我使用了 ActiveCartService 的 'updateEntry' 方法来更新购物车的条目。之后,来自 CartEntryEffects class 的 'updateEntry$' 效果被触发,返回了新的操作。
updateEntry$: Observable = this.actions$.pipe(
ofType(CartActions.CART_UPDATE_ENTRY),
map((action: CartActions.CartUpdateEntry) => action.payload),
concatMap(payload =>
this.cartEntryConnector
.update(payload.userId, payload.cartId, payload.entry, payload.qty)
// should be my logic with payload
.pipe(
map(() => {
return new CartActions.CartUpdateEntrySuccess({
userId: payload.userId,
cartId: payload.cartId,
});
}),
获取此有效负载的正确方法是什么? 或者我可以覆盖这个效果或添加我的逻辑吗?
这取决于您要对负载执行的操作。
如果您想在详细信息更新到 Commerce 之前对其进行处理,那么这通常由连接器和适配器处理。参见 https://sap.github.io/spartacus-docs/connecting-to-other-systems/
如果您想引用更新的条目并显示它,那么您可以通过 ActiveCartService 获取一个 Observable。例如,参见声明 cartEntry$: Observable<OrderEntry>
的 AddToCart 组件 (https://sap.github.io/spartacus/components/AddToCartComponent.html#source),然后在 ngOnInit() 中执行 this.cartEntry$ = this.activeCartService.getEntry(this.productCode)