Vue3中使用Pinia

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')

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容