0
点赞
收藏
分享

微信扫一扫

vue3中pinia使用持久化管理

DT_M 2024-07-24 阅读 32

安装插件

npm install pinia pinia-plugin-persist

pinia进行注册

创建index.ts

import { createPinia } from 'pinia';
//对外暴露大仓库
export default createPinia();

在mian.ts

//引入pinpa
import { createApp } from 'vue'
//引入根组件
import App from './App.vue'
const app = createApp(App)
import Pinia from './store/index'
//注册Pinpa持久化插件
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
Pinia.use(piniaPluginPersistedstate)
app.use(Pinia)
app.mount('#app')

调用

import {defineStore} from 'pinia'
import {reqCode,reqUserLogin} from '../../api/hospital/index'
import {PhoneTy} from '../../api/hospital/type'
const useUserStore = defineStore('User',{
    state:()=>{
        return{
            visiable: false,//用于控制登录组件的dialog显示与隐藏
            code: '',//存储用户的验证码,
            //存储用户的信息
            userInfo:JSON.parse(localStorage.getItem('USERINFO') as string) || {}
        }
    },
    actions:{
        //获取短信验证
      async  getCode(value:string){
         const r:PhoneTy = await reqCode(value) as any
         if(r.code == 200){
            this.code = r.data
        
            // console.log(this.code,'this.code1')
         }
         console.log(this.code,'this.code2')
         
        },
        //登陆用户
        async reqUserLogin(value:object){
          const r = await reqUserLogin(value)
          this.userInfo = r.data
          
        //   localStorage.setItem('USERINFO',JSON.stringify(this.userInfo))
          console.log(r)
        }
    },
    // 在这里进行自定义配置
  persist: {
    key:'USERINFO', // 存储的key, 默认store.$id
    // storage: sessionStorage, // 存储的类型,默认localStorage
    paths:['userInfo']// 指定 state 中哪些数据需要被持久化, 默认undefined
  }

})
export default useUserStore

即使是对象数组,也可以直接放进去,不需要JSON转换

取值的话需要转换

userInfo:JSON.parse(localStorage.getItem('USERINFO') as string) || {}

使用的话正常和存储在本地一样调用就行

举报

相关推荐

0 条评论