Vue狀態(tài)管理庫Pinia詳細(xì)介紹
什么是 Pinia
Pinia (西班牙語中的菠蘿),本質(zhì)上依然是一個(gè)狀態(tài)管理的庫,用于跨組件、頁面進(jìn)行狀態(tài)共享.
pinia 與 vuex 的區(qū)別:
- 更友好的TypeScript支持,Vuex之前對TS的支持很不友好
- 與 Vuex 相比,Pinia 提供了一個(gè)更簡單的 API,具有更少的儀式,提供了 Composition-API 風(fēng)格的 API
- 不再有modules的嵌套結(jié)構(gòu)
- 也不再有命名空間的概念,不需要記住它們的復(fù)雜關(guān)系
如何使用 Pinia
安裝 pinia
yarn add pinia
創(chuàng)建一個(gè)pinia
// src/stores/index.js
import { createPinia } from "pinia";
const pinia = createPinia()
export default pinia//main.js import pinia from './stores' app.use(pinia)
認(rèn)識 Store
一個(gè) Store (如 Pinia)是一個(gè)實(shí)體,它會持有為綁定到你組件樹的狀態(tài)和業(yè)務(wù)邏輯,也就是保存了全局的狀態(tài)
這樣就可以定義任意數(shù)量的Store來管理你的狀態(tài),包括 state、getters、actions
定義一個(gè)store
- Store 是使用 defineStore() 定義的,
- 且它需要一個(gè)唯一名稱,作為第一個(gè)參數(shù)傳遞

使用 store


操作 State
state 是 store 的核心部分,store是用來實(shí)現(xiàn)我們管理狀態(tài)的。

- 方式一:直接一個(gè)個(gè)修改state
- 方式二:一次性修改多個(gè)狀態(tài)
- 方式三:替換state
- 方式四:重置state




Getters
1. 認(rèn)識和定義 Getters
Getters相當(dāng)于Store的計(jì)算屬性:
- 可以用 defineStore() 中的 getters 屬性定義;
- getters中可以定義接受一個(gè)state作為參數(shù)的函數(shù);
2. 訪問 Getters
- 方式一:訪問當(dāng)前 store 的Getters
- 方式二:Getters 中訪問自己的其他Getters
- 方式三:訪問其他的 store 的Getters
getters: {
// 1. 基本使用
debouleCount(state) {
return state.count * 2
},
// 2. 一個(gè) getters 引入另外一個(gè) getters
useDebouleCount() {
return this.debouleCount + 2
},
// 3. getter也支持返回一個(gè)函數(shù)
getFriendById(state) {
return function (id) {
for (let i = 0; i < state.vagetabel.length; i++) {
const vagetabel = state.vagetabel[i]
if (vagetabel.id === id) {
return vagetabel
}
}
}
},
// 4.訪問其他store中的Getters
showMessage(state) {
// 獲取user信息
const useStore = useUser()
// 獲取自己的state
// 拼接信息
return `name:${useStore.name} - count:${state.count}`
}
}

認(rèn)識和定義 Action
Action 可以理解成組件中的 methods ,和getters一樣,在action中可以通過this訪問整個(gè)store實(shí)例的所有操作。

Action 是支持異步操作的,所以可以使用 await。

到此這篇關(guān)于Vue狀態(tài)管理庫Pinia詳細(xì)介紹的文章就介紹到這了,更多相關(guān)Vue Pinia內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue后臺管理添加多語言功能的實(shí)現(xiàn)示例
這篇文章主要介紹了vue后臺管理添加多語言功能的實(shí)現(xiàn)示例,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下2021-04-04
在Vue methods中調(diào)用filters里的過濾器實(shí)例
今天小編就為大家分享一篇在Vue methods中調(diào)用filters里的過濾器實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
Ant?Design?of?Vue的樹形控件Tree的使用及說明
這篇文章主要介紹了Ant?Design?of?Vue的樹形控件Tree的使用及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
Vue中實(shí)現(xiàn)權(quán)限控制的方法示例
這篇文章主要介紹了Vue中實(shí)現(xiàn)權(quán)限控制的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06
vue項(xiàng)目打包上傳github并制作預(yù)覽鏈接(pages)
這篇文章主要介紹了vue項(xiàng)目打包上傳github并制作預(yù)覽鏈接(pages)的相關(guān)資料,需要的朋友可以參考下2019-04-04
Vue實(shí)現(xiàn)用戶自定義字段顯示數(shù)據(jù)的方法
今天小編就為大家分享一篇Vue實(shí)現(xiàn)用戶自定義字段顯示數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

