SAP 电商云 UI State persistence 状态持久化设计的入口 - initSync
在 Spartacus 2.0 版之前,實(shí)現(xiàn)狀態(tài)持久性的唯一方法是使用一種稱為 storageSync 的簡(jiǎn)單的聲明性機(jī)制,它允許您提供屬性鍵以在存儲(chǔ)中持久化。 當(dāng)您啟動(dòng)您的應(yīng)用程序時(shí),這些持久化的鍵用于設(shè)置存儲(chǔ)中的初始狀態(tài)。 使用 Spartacus 2.0 或更高版本,您可以通過(guò)使用 StatePersistenceService,特別是它的 syncWithStorage 方法來(lái)保持店面應(yīng)用程序的狀態(tài)。 它不像 storageSync 那樣簡(jiǎn)單,但它使用上下文和專用的 onRead 回調(diào)提供了更多控制。
您可以將以下選項(xiàng)傳遞給 syncWithStorage 函數(shù):key、state、context、context、context、storageType 和 onRead。
這些選項(xiàng)的工作方式如下:
(1) 鍵用于區(qū)分存儲(chǔ)中的一個(gè)特征和另一個(gè)特征。例如,要存儲(chǔ)活動(dòng)的購(gòu)物車 id,您可以使用購(gòu)物車密鑰,而對(duì)于用戶會(huì)話數(shù)據(jù),您可以使用會(huì)話密鑰。
(2) state$ 是一個(gè)可觀察的對(duì)象,每次您想將新值保存到持久存儲(chǔ)時(shí),它都會(huì)發(fā)出一個(gè)值。例如,為了在每次活動(dòng)購(gòu)物車 id 更改時(shí)保留活動(dòng)購(gòu)物車 id,此 observable 會(huì)發(fā)出一個(gè)新值。
(3) context$ 是一個(gè) observable,它描述了特定狀態(tài)的有效上下文。例如,活動(dòng)購(gòu)物車 ID 僅對(duì)一個(gè) base site 有效。在不同的基礎(chǔ)站點(diǎn)上,您希望使用不同的購(gòu)物車。在這種情況下,使用 context$,您將使用每次更改時(shí)發(fā)出基本站點(diǎn)的 observable。
storageType 指定使用的存儲(chǔ)類型。默認(rèn)情況下,存儲(chǔ)類型為本地存儲(chǔ),但您可以將其更改為會(huì)話存儲(chǔ)等。
onRead 是每次上下文更改時(shí)調(diào)用的回調(diào)。以購(gòu)物車為例,每次更改基本站點(diǎn)時(shí),都會(huì)使用從存儲(chǔ)中讀取的值調(diào)用該特定上下文的回調(diào)。如果存儲(chǔ)中沒(méi)有保存任何內(nèi)容,它將調(diào)度 undefined 值。
運(yùn)行時(shí),該邏輯通過(guò) APP_INITIALIZER 初始化:
返回的 result 是一個(gè) function:
 
toPromise 最后會(huì)觸發(fā) subscribe:
 
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
 
總結(jié)
以上是生活随笔為你收集整理的SAP 电商云 UI State persistence 状态持久化设计的入口 - initSync的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 关于某些 Visual Studio C
- 下一篇: 如何解决由于找不到msvcp120.dl
