共计 849 个字符,预计需要花费 3 分钟才能阅读完成。
在 Spartacus 2.0 版之前,实现状态持久性的惟一办法是应用一种称为 storageSync 的简略的申明性机制,它容许您提供属性键以在存储中长久化。当您启动您的应用程序时,这些长久化的键用于设置存储中的初始状态。应用 Spartacus 2.0 或更高版本,您能够通过应用 StatePersistenceService,特地是它的 syncWithStorage 办法来放弃店面应用程序的状态。它不像 storageSync 那样简略,但它应用上下文和专用的 onRead 回调提供了更多管制。
您能够将以下选项传递给 syncWithStorage 函数:key、state$、context$、storageType 和 onRead。
这些选项的工作形式如下:
(1) 键用于辨别存储中的一个特色和另一个特色。例如,要存储流动的购物车 id,您能够应用购物车密钥,而对于用户会话数据,您能够应用会话密钥。
(2) state$ 是一个可察看的对象,每次您想将新值保留到长久存储时,它都会收回一个值。例如,为了在每次流动购物车 id 更改时保留流动购物车 id,此 observable 会收回一个新值。
(3) context$ 是一个 observable,它形容了特定状态的无效上下文。例如,流动购物车 ID 仅对一个 base site 无效。在不同的根底站点上,您心愿应用不同的购物车。在这种状况下,应用 context$,您将应用每次更改时收回根本站点的 observable。
storageType 指定应用的存储类型。默认状况下,存储类型为本地存储,但您能够将其更改为会话存储等。
onRead 是每次上下文更改时调用的回调。以购物车为例,每次更改根本站点时,都会应用从存储中读取的值调用该特定上下文的回调。如果存储中没有保留任何内容,它将调度 undefined 值。
运行时,该逻辑通过 APP_INITIALIZER 初始化:
返回的 result 是一个 function:
toPromise 最初会触发 subscribe:
更多 Jerry 的原创文章,尽在:” 汪子熙 ”: