Pinia 的 Setup Stores 語法使用實(shí)例詳解
關(guān)于大菠蘿
如果你還不了解 Pinia,那你可以將它理解為 Vuex5(因?yàn)?Vuex 5 不會出了),是 Vue3 全家桶成員之一。
這里是它的英文官方文檔,中文文檔好像不是官方的,并且當(dāng)前翻譯的不全面(比如 Setup Stores 就沒有在中文文檔中出現(xiàn)),不是很推薦。
最常見的 Option Stores 語法
傳遞帶有 state
、getters
和 actions
屬性的 Options 對象給 defineStore()
就可以定義一個 Store:
export const useCounterStore = defineStore('counter', { state: () => ({ count: 0 }), getters: { doubleCount: (state) => state.count * 2 }, actions: { increment() { this.count++ } } })
這種語法與 Vuex
中定義 Store 的語法非常近似,但是少了 Mutation
字段。
不僅如此,這種寫法也和 Vue2
的 Options API(選項(xiàng)式 API)結(jié)構(gòu)類似:state
與 data
對應(yīng)、getters
與 computed
對應(yīng)、actions
與 methods
對應(yīng)。
這種寫法的好處就是結(jié)構(gòu)非常清晰,容易上手,特別是對剛從 Vue2 和 Vuex 轉(zhuǎn)到 Pinia 的開發(fā)者!
安利 Setup Stores 語法
但 Setup Stores 語法更靈活、更函數(shù):
export const useCounterStore = defineStore('counter', () => { const count = ref(0) const doubleCount = computed(() => count.value * 2) function increment() { count.value++ } return { count, doubleCount, increment } })
在這種語法中,ref
與 state
對應(yīng)、computed
與 getters
對應(yīng)、function
與 actions
對應(yīng)。
想必寫過 Vue3 朋友就能一眼看出來這和 Vue3 新推出的 Composition API(組合式 API)非常類似!這樣的話,在使用 Vue3 和 Pinia 的時候,就能統(tǒng)一語法了。
如果在 Vue3 的 Setup 語法外使用 Pinia 呢?
如果你準(zhǔn)備在 Vue3 的 Setup 語法外引入 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 的模板
最后自薦一下這個輕量級 Vue3 后臺管理模板,集成好了 Pinia 并且語法正是 Setup Stores!
以上就是Pinia 的 Setup Stores 語法使用實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于Pinia Setup Stores 語法的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue中echarts圖表大小適應(yīng)窗口大小且不需要刷新案例
這篇文章主要介紹了vue中echarts圖表大小適應(yīng)窗口大小且不需要刷新案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07vue實(shí)現(xiàn)token過期自動跳轉(zhuǎn)到登錄頁面
本文主要介紹了vue實(shí)現(xiàn)token過期自動跳轉(zhuǎn)到登錄頁面,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10vue、uniapp實(shí)現(xiàn)組件動態(tài)切換效果
在Vue中,通過使用動態(tài)組件,我們可以實(shí)現(xiàn)組件的動態(tài)切換,從而達(dá)到頁面的動態(tài)展示效果,這篇文章主要介紹了vue、uniapp實(shí)現(xiàn)組件動態(tài)切換,需要的朋友可以參考下2023-10-10關(guān)于vue中計算屬性computed的詳細(xì)講解
computed是vue的配置選項(xiàng),它的值是一個對象,其中可定義多個計算屬性,每個計算屬性就是一個函數(shù),下面這篇文章主要給大家介紹了關(guān)于vue中計算屬性computed的詳細(xì)講解,需要的朋友可以參考下2022-07-07vue-admin-box第一步npm?install時報錯的處理
這篇文章主要介紹了vue-admin-box第一步npm?install時報錯的處理方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10vue-print-nb解決vue打印問題,并且隱藏頁眉頁腳方式
這篇文章主要介紹了vue-print-nb解決vue打印問題,并且隱藏頁眉頁腳方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05