【发布时间】:2021-06-19 07:37:36
【问题描述】:
我们在 hybris 中创建了一个自定义 API,我需要在某些 Spartacus 页面中使用该自定义 API 返回的数据。我想做这个登录后,并想在页面刷新时调用该 api。 此外,我想将数据保持在一个状态,以便我可以跨页面使用它。 我知道如何在 Angular 中做到这一点,但我很困惑如何在 Spartacus 中做到这一点。有人可以帮我吗
【问题讨论】:
我们在 hybris 中创建了一个自定义 API,我需要在某些 Spartacus 页面中使用该自定义 API 返回的数据。我想做这个登录后,并想在页面刷新时调用该 api。 此外,我想将数据保持在一个状态,以便我可以跨页面使用它。 我知道如何在 Angular 中做到这一点,但我很困惑如何在 Spartacus 中做到这一点。有人可以帮我吗
【问题讨论】:
您应该将 spartacus 视为外部库。如果你知道如何在 Angular 中实现它,那就去做吧。我们的大部分操作(例如登录)都导出到公共 API 中:
import { ActivatedRouterStateSnapshot, AuthActions } from '@spartacus/core';
import { RouterNavigatedAction, ROUTER_NAVIGATED } from '@ngrx/router-store';
@Injectable()
export class YourEffects {
@Effect()
yourActionOnLogin$: Observable<YourActions.XXX> = this.actions$.pipe(
ofType(AuthActions.LOGIN),
map(() => new CheckoutActions.XXX())
);
@Effect()
yourActionOnNavigation$: Observable<YourActions.YYY> = this.actions$.pipe(
ofType<RouterNavigatedAction<ActivatedRouterStateSnapshot>>(
ROUTER_NAVIGATED
),
map(() => new YourActions.YYY())
);
}
您也可以为部分 ngrx 存储和 occ 适配器 (API) 创建和提供自己的模块。
【讨论】: