vue3项目pinia的统一封装

vue3引入了新的vue.js状态的管理库,相较与以前的vuex,写法上更简单也更符合vue3的标准:

import { defineStore } from 'pinia'
import {ref} from 'vue
export const useCounterStore = defineStore('counter', () => {
  const count = ref(0)
  function increment() {
    count.value++
  }

  return { count, increment }
})

#在需要使用的文件
import { useCounterStore } from '@/stores/counter'
const counter = useCounterStore()
获取count =》 counter.count
获取increment方法,直接counter.increment()

但是,随着定义的状态管理增多,需要多次导入,所以这里记录下统一封装的使用:

1.stores下面定义index.js和modules文件夹分别创建cart.js和user.js

2.这里室stores/index.js的文件内容:

import { createPinia } from 'pinia'
import persist from 'pinia-plugin-persistedstate'
export * from './modules/user'
export * from './modules/cart'
const pinia = createPinia()
pinia.use(persist)
export default pinia

 3.在main.js中引入pinia

import { createApp } from 'vue'

import App from './App.vue'
import router from './router'
import pinia from './stores/index'
const app = createApp(App)
app.use(pinia)
app.use(router)

app.mount('#app')

4.下面室cart.js和user.js的内容

import { ref, computed } from 'vue'
import { defineStore } from 'pinia'

export const useCartStore = defineStore('cart', () => {
  const count = ref(0)
  const doubleCount = computed(() => count.value * 2)
  function increment() {
    count.value++
  }

  return { count, doubleCount, increment }
})

--------------------------------------------------------------
user.js
import { defineStore } from 'pinia'
import { ref } from 'vue'
export const useUserStore = defineStore(
  'big-user',
  () => {
    const token = ref('')
    const setToken = (data) => {
      token.value = data
    }
    const removeToken = () => {
      token.value = ''
    }
    return {
      token,
      setToken,
      removeToken
    }
  },
  {
    persist: true
  }
)

5.然后在需要使用的方法就可以直接其定义的变量和方法

import { useUserStore } from '@/stores'
import {userCartStore} from '@stores
const userStore = useUserStore()
const useCart = userCartStore()

#注:pinia的持久化存储的插件 pnpm add pinia-plugin-persistedstate -D

其配置可以参照官方文件,Home | pinia-plugin-persistedstate

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_45925246

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值