要编写与 ASM 兼容的代码,开发人员需要使用 UserIdService 中的 takeUserId() 函数来确定 OCC 调用中使用的 userId。 这通常在一个服务中完成,该服务调度一个在有效负载中包含 userId 的 Action.
在 Spartacus 官方支持 ASM 场景之前,在代表经过身份验证的用户发送的请求中,OCC userId 是特殊的 current
OCC 用户,由 OCC_USER_ID_CURRENT 常量表示。 这可以在以下示例中看到:
/** * Retrieves user's addresses */loadAddresses(): void {this.store.dispatch(new UserActions.LoadUserAddresses(OCC_USER_ID_CURRENT));}
借助 Spartacus 中的官方 ASM 支持,确定 OCC userId 的正确方法是调用 UserIdService.takeUserId()。 使用前面的示例作为起点,Spartacus 现在确定 OCC 用户 ID,如下所示:
/** * Retrieves user's addresses */loadAddresses(): void {this.userIdService.takeUserId().subscribe((userId) => {this.store.dispatch(new UserActions.LoadUserAddresses(userId));});}
小窍门:如果