1. 程式人生 > 其它 >SAP 電商雲 UI State persistence 狀態持久化設計的入口 - initSync

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的原創文章,盡在:"汪子熙":