currency 和 language 都持久化在 local storage 里了:
app.config.ts?
Failing E2E tests: The site context tests are failing
涉及到的文件:
- currency-checkout-page.e2e-spec.ts
- language-checkout-page.e2e-spec.ts
文件路径:projects\storefrontapp-e2e-cypress\cypress\integration\regression\site-context\currency\currency-cart-page.core-e2e-spec.ts
一些相关的函数和文件:
- default-site-context-config.ts
- site-context-config-initializer.ts
SiteContext 是一个 interface,定义了三个方法:
export interface SiteContext<T> { getAll(): Observable<T[]>; getActive(): Observable<string>; setActive(isocode: string); }
Site Context 的实现位于 core 文件夹内。选择器是用于获取存储状态切片(slice)的纯函数,在 Spartacus 源代码实现中有着广泛的用途。
store
照例是分了好几个子文件夹。
导入 EffectsModule 和 StoreModule 两个 module:
注意 StoreModule.forFeature 的第二个参数,传入一个 ActionReducerMap 或者 InjectionToken:
在 Spartacus 里,我们使用的是一个 InjectionToken:
export const reducerToken: InjectionToken<ActionReducerMap<SiteContextState>> = new InjectionToken<ActionReducerMap<SiteContextState>>('SiteContextReducers');