Vue3中使用Pinia

2022-05-22  本文已影响0人  寻找无名的特质

Vue2 中使用Vuex进行状态管理,在Vue3中,引入了Pinia,如果使用Vue3的脚手架搭建项目,其中包含了简单的示例:

import { defineStore } from 'pinia'

export const useCounterStore = defineStore({
  id: 'counter',
  state: () => ({
    counter: 0
  }),
  getters: {
    doubleCount: (state) => state.counter * 2
  },
  actions: {
    increment() {
      this.counter++
    }
  }
})

这个示例可以在组件中直接使用,在script setup中引入定义:

import { useCounterStore } from '@/stores/counter'

然后初始化一个实例:

const store = useCounterStore()

在模板中就可以调用这个实例了:

   {{ store.counter }}
      {{ store.doubleCount }}
   <button @click="store.increment()">加一</button>

其中保存的状态是全局的,如果创建另一个实例,会发现,获取的数据是一样的:

const store = useCounterStore()
const store1 = useCounterStore()

在其它组件中获取的数据也是一样的。
最后说明一下,使用pinia需要在vue项目的入口进行声明和注册:

import { createApp } from 'vue'
import { createPinia } from 'pinia'

import App from './App.vue'
import router from './router'

const app = createApp(App)

app.use(createPinia())
app.use(router)

app.mount('#app')

上一篇下一篇

猜你喜欢

热点阅读