88
Vue 3 學習之旅
狀態管理
Day 88: Pinia 的插件 (Plugins)
·6 分鐘閱讀·狀態管理
摘要
Pinia 的插件機制允許我們擴展其核心功能,例如將狀態持久化到 localStorage、添加自訂的狀態監聽器等。
定義與說明
一個 Pinia 插件就是一個函式,它會接收到一個包含 store 實例的「上下文」物件。我們可以在這個函式中,透過 store.$subscribe
來監聽狀態變化,或直接在 store 上添加新的屬性。
實作範例
一個將狀態自動保存到 localStorage 的簡單插件。
plugins/pinia-persistence.js
// plugins/pinia-persistence.js
export function persistencePlugin({ store }) {
const savedState = JSON.parse(localStorage.getItem(store.$id));
if (savedState) {
store.$patch(savedState);
}
store.$subscribe((mutation, state) => {
localStorage.setItem(store.$id, JSON.stringify(state));
});
}
main.js
// main.js
import { createPinia } from 'pinia';
const pinia = createPinia();
pinia.use(persistencePlugin);
app.use(pinia);
結論
插件為 Pinia 提供了極高的擴展性,讓我們可以輕鬆地將通用功能(如持久化、日誌記錄)與核心業務邏輯分離,並在多個 Store 之間共享。
Pinia 插件 持久化 擴展性