Pinia的SetupStores语法使用实例详解
关于大菠萝
如果你还不了解 Pinia,那你可以将它理解为 Vuex5(因为 Vuex 5 不会出了),是 Vue3 全家桶成员之一。
这里是它的英文官方文档,中文文档好像不是官方的,并且当前翻译的不全面(比如 Setup Stores 就没有在中文文档中出现),不是很推荐。
最常见的 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(选项式 API)结构类似:state
与 data
对应、getters
与 computed
对应、actions
与 methods
对应。
这种写法的好处就是结构非常清晰,容易上手,特别是对刚从 Vue2 和 Vuex 转到 Pinia 的开发者!
安利 Setup Stores 语法
但 Setup Stores 语法更灵活、更函数:
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
对应、computed
与 getters
对应、function
与 actions
对应。
想必写过 Vue3 朋友就能一眼看出来这和 Vue3 新推出的 Composition API(组合式 API)非常类似!这样的话,在使用 Vue3 和 Pinia 的时候,就能统一语法了。
如果在 Vue3 的 Setup 语法外使用 Pinia 呢?
如果你准备在 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 }
})
export function useCounterStoreHook() {
return useCounterStore(store)
}
然后引入 import { useCounterStoreHook } from "@/store/modules/xxxxxx"
即可!
集成好 Pinia 的模板
最后自荐一下这个轻量级 Vue3 后台管理模板,集成好了 Pinia 并且语法正是 Setup Stores!
GitHub: v3-admin-vite
Gitee: v3-admin-vite
以上就是Pinia 的 Setup Stores 语法使用实例详解的详细内容,更多关于Pinia Setup Stores 语法的资料请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341