Pinia3.0 發布了!重大更新,全面升級!
Vue 官方狀態管理工具 Pinia 迎來 3.0 版本更新,正式放棄對 Vue 2 的支持。2 月 11 日,Pinia 3.0 版本發布,此次更新并未引入新功能,而是移除了已棄用的 API 并升級了核心依賴項。
以下是更新要點:
- Vue 3 專屬支持: Pinia 3.0 僅兼容 Vue 3,Vue 2 用戶需繼續使用 v2 版本
- TypeScript 要求: 需安裝 TypeScript 5 或更高版本
- Devtools API 升級: Devtools API 已更新至 v7 版本
- Nuxt 模塊適配: Nuxt 模塊現已支持 Nuxt 3,Nuxt 2 或 Nuxt bridge 用戶需繼續使用舊版 Pinia
此次更新標志著 Pinia 全面轉向 Vue 3 生態,開發者需根據項目需求選擇合適的版本。
有些朋友可能也是剛使用 Vue3 開發項目,所以對 Pinia 有點懵,接下來我帶大家重溫一下 Pinia 的用法:
npm install pinia
1. 創建 Pinia 實例
在 Vue 3 項目中,首先需要創建一個 Pinia 實例,并將其掛載到應用中。通常在 store.js 或 store.ts 文件中完成這一操作,這里我先在 main.ts 中去創建:
通過以上代碼,Pinia 已經成功集成到 Vue 3 項目中
2. 創建 Store
Pinia 的核心概念是 Store,它是狀態管理的核心單元。每個 Store 都是一個獨立的模塊,包含狀態、計算屬性和方法。
以下是一個簡單的 Store 示例:
在上面的代碼中:
- state 用于定義狀態。
- getters 用于定義計算屬性。
- actions 用于定義修改狀態的方法
3. 在組件中使用 Store
定義好 Store 后,可以在 Vue 組件中使用它。以下是一個使用 useCounterStore 的示例:
在上面的代碼中:
- 使用 useCounterStore 獲取 Store 實例。
- 使用 storeToRefs 解構狀態和計算屬性,確保它們保持響應式。
- 直接調用 Store 中的方法來修改狀態。
4. 組合式 API 中使用 Store
Pinia 與 Vue 3 的組合式 API 完美契合。以下是一個在 setup 函數中使用 Store 的示例:
5. 模塊化 Store
在實際項目中,通常會有多個 Store。Pinia 支持模塊化管理,您可以將不同的狀態邏輯拆分到多個 Store 中。
例如,可以創建一個 userStore 來管理用戶相關的狀態:
然后在組件中同時使用多個 Store: