SAP 電商雲 UI State persistence 狀態持久化設計的入口 - initSync
在 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的原創文章,盡在:"汪子熙":