Pinia 的 Setup Stores 語(yǔ)法使用實(shí)例詳解
關(guān)于大菠蘿
如果你還不了解 Pinia,那你可以將它理解為 Vuex5(因?yàn)?Vuex 5 不會(huì)出了),是 Vue3 全家桶成員之一。
這里是它的英文官方文檔,中文文檔好像不是官方的,并且當(dāng)前翻譯的不全面(比如 Setup Stores 就沒(méi)有在中文文檔中出現(xiàn)),不是很推薦。
最常見(jiàn)的 Option Stores 語(yǔ)法
傳遞帶有 state、getters 和 actions 屬性的 Options 對(duì)象給 defineStore() 就可以定義一個(gè) Store:
export const useCounterStore = defineStore('counter', {
state: () => ({
count: 0
}),
getters: {
doubleCount: (state) => state.count * 2
},
actions: {
increment() {
this.count++
}
}
})
這種語(yǔ)法與 Vuex 中定義 Store 的語(yǔ)法非常近似,但是少了 Mutation 字段。
不僅如此,這種寫(xiě)法也和 Vue2 的 Options API(選項(xiàng)式 API)結(jié)構(gòu)類(lèi)似:state 與 data 對(duì)應(yīng)、getters 與 computed 對(duì)應(yīng)、actions 與 methods 對(duì)應(yīng)。
這種寫(xiě)法的好處就是結(jié)構(gòu)非常清晰,容易上手,特別是對(duì)剛從 Vue2 和 Vuex 轉(zhuǎn)到 Pinia 的開(kāi)發(fā)者!
安利 Setup Stores 語(yǔ)法
但 Setup Stores 語(yǔ)法更靈活、更函數(shù):
export const useCounterStore = defineStore('counter', () => {
const count = ref(0)
const doubleCount = computed(() => count.value * 2)
function increment() {
count.value++
}
return { count, doubleCount, increment }
})
在這種語(yǔ)法中,ref 與 state 對(duì)應(yīng)、computed 與 getters 對(duì)應(yīng)、function 與 actions 對(duì)應(yīng)。
想必寫(xiě)過(guò) Vue3 朋友就能一眼看出來(lái)這和 Vue3 新推出的 Composition API(組合式 API)非常類(lèi)似!這樣的話,在使用 Vue3 和 Pinia 的時(shí)候,就能統(tǒng)一語(yǔ)法了。
如果在 Vue3 的 Setup 語(yǔ)法外使用 Pinia 呢?
如果你準(zhǔn)備在 Vue3 的 Setup 語(yǔ)法外引入 Pinia 的 Store,例如 useCounterStore。
直接 import { useCounterStore } from "@/store/modules/xxxxxx" 是不行的,你得像這樣:
import store from "@/store"
export const useCounterStore = defineStore('counter', () => {
const count = ref(0)
const doubleCount = computed(() => count.value * 2)
function increment() {
count.value++
}
return { count, doubleCount, increment }
})
/** 在 setup 外使用 */
export function useCounterStoreHook() {
return useCounterStore(store)
}
然后引入 import { useCounterStoreHook } from "@/store/modules/xxxxxx" 即可!
集成好 Pinia 的模板
最后自薦一下這個(gè)輕量級(jí) Vue3 后臺(tái)管理模板,集成好了 Pinia 并且語(yǔ)法正是 Setup Stores!
以上就是Pinia 的 Setup Stores 語(yǔ)法使用實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于Pinia Setup Stores 語(yǔ)法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vscode中使用vue的一些插件總結(jié)(方便開(kāi)發(fā))
對(duì)于很多使用vscode編寫(xiě)vue項(xiàng)目的新手同學(xué)來(lái)說(shuō),可能不知道使用什么插件,下面這篇文章主要給大家介紹了關(guān)于vscode中使用vue的一些插件,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
vue路由前進(jìn)后退動(dòng)畫(huà)效果的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue路由前進(jìn)后退動(dòng)畫(huà)效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12
vue實(shí)現(xiàn)四級(jí)導(dǎo)航及驗(yàn)證碼的方法實(shí)例
我們?cè)谧鲰?xiàng)目經(jīng)常會(huì)遇到多級(jí)導(dǎo)航這個(gè)需求,所以下面這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)四級(jí)導(dǎo)航及驗(yàn)證碼的相關(guān)資料,文章通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-07-07
從vue基礎(chǔ)開(kāi)始創(chuàng)建一個(gè)簡(jiǎn)單的增刪改查的實(shí)例代碼(推薦)
這篇文章主要介紹了從vue基礎(chǔ)開(kāi)始創(chuàng)建一個(gè)簡(jiǎn)單的增刪改查的實(shí)例代碼,需要的朋友參考下2018-02-02
vue前端導(dǎo)出多級(jí)表頭的excel表的示例代碼
本文主要介紹了vue前端導(dǎo)出多級(jí)表頭的excel表的示例代碼,可以使用xlsx庫(kù)來(lái)創(chuàng)建Excel文件,下面就來(lái)具體介紹一下,感興趣的可以了解一下2024-06-06
Vue3響應(yīng)式對(duì)象是如何實(shí)現(xiàn)的(1)
這篇文章主要介紹了Vue3響應(yīng)式對(duì)象是如何實(shí)現(xiàn)的,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
vue+elementUI動(dòng)態(tài)增加表單項(xiàng)并添加驗(yàn)證的代碼詳解
這篇文章主要介紹了vue+elementUI動(dòng)態(tài)增加表單項(xiàng)并添加驗(yàn)證的代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
uni-app資源引用的方法匯總(絕對(duì)路徑和相對(duì)路徑)
在基于UniApp開(kāi)發(fā)跨平臺(tái)應(yīng)用時(shí),開(kāi)發(fā)者通過(guò)特定語(yǔ)法來(lái)管理和加載應(yīng)用程序的各種資源文件,如圖片、字體、音頻、視頻等,在uni-app中,資源通常會(huì)被組織在項(xiàng)目的各個(gè)目錄下,本文給大家介紹了uni-app資源引用的方法匯總,需要的朋友可以參考下2025-01-01

