天天看點

SAP 電商雲 UI State persistence 狀态持久化設計的入口 - initSync

在 Spartacus 2.0 版之前,實作狀态持久性的唯一方法是使用一種稱為 storageSync 的簡單的聲明性機制,它允許您提供屬性鍵以在存儲中持久化。 當您啟動您的應用程式時,這些持久化的鍵用于設定存儲中的初始狀态。 使用 Spartacus 2.0 或更高版本,您可以通過使用 StatePersistenceService,特别是它的 syncWithStorage 方法來保持店面應用程式的狀态。 它不像 storageSync 那樣簡單,但它使用上下文和專用的 onRead 回調提供了更多控制。

您可以将以下選項傳遞給 syncWithStorage 函數:key、state、 c o n t e x t 、context、context、storageType 和 onRead。

這些選項的工作方式如下:

(1) 鍵用于區分存儲中的一個特征和另一個特征。例如,要存儲活動的購物車 id,您可以使用購物車密鑰,而對于使用者會話資料,您可以使用會話密鑰。

(2) state$ 是一個可觀察的對象,每次您想将新值儲存到持久存儲時,它都會發出一個值。例如,為了在每次活動購物車 id 更改時保留活動購物車 id,此 observable 會發出一個新值。

(3) context$ 是一個 observable,它描述了特定狀态的有效上下文。例如,活動購物車 ID 僅對一個 base site 有效。在不同的基礎站點上,您希望使用不同的購物車。在這種情況下,使用 context$,您将使用每次更改時發出基本站點的 observable。

storageType 指定使用的存儲類型。預設情況下,存儲類型為本地存儲,但您可以将其更改為會話存儲等。

onRead 是每次上下文更改時調用的回調。以購物車為例,每次更改基本站點時,都會使用從存儲中讀取的值調用該特定上下文的回調。如果存儲中沒有儲存任何内容,它将排程 undefined 值。

運作時,該邏輯通過 APP_INITIALIZER 初始化:

SAP 電商雲 UI State persistence 狀态持久化設計的入口 - initSync

傳回的 result 是一個 function:

SAP 電商雲 UI State persistence 狀态持久化設計的入口 - initSync
SAP 電商雲 UI State persistence 狀态持久化設計的入口 - initSync

繼續閱讀