您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页vue3的状态管理(pinia)持久化解决方案

vue3的状态管理(pinia)持久化解决方案

来源:华佗小知识

vue3中数据持久化插件pinia-plugin-persistedstate

解决

第三方插件pinia-plugin-persistedstate,其实这个插件是把数据存入localStorage进行持久化存储的

  • 安装
pnpm i pinia-plugin-persistedstate
# or
npm i pinia-plugin-persistedstate
# or
yarn add pinia-plugin-persistedstate
  • main.js
import persist from 'pinia-plugin-persistedstate'
const app = createApp(App)

app.use(createPinia())
//使用插件
app.use(createPinia().use(persist))
  • store/user.ts
import type { User } from '@/types/user'
import { defineStore } from 'pinia'
import { ref } from 'vue'

export const useUserStore = defineStore(
  'cp-user',
  () => {
    // 用户信息
    const user = ref<User>()
    // 设置用户,登录后使用
    const setUser = (u: User) => {
      user.value = u
    }
    // 清空用户,退出后使用
    const delUser = () => {
      user.value = undefined
    }
    return { user, setUser, delUser }
  },
  {
    persist: true
  }
)

  • 测试
<script setup lang="ts">
import { useUserStore } from './stores/user'

const store = useUserStore()
</script>

<template>
  <p>{{ store.user }}</p>
  <button @click="store.setUser({ id: '1', mobile: '1', account: '1', avatar: '1', token: '1' })">
    登录
  </button>
  <button @click="store.delUser()">退出</button>
</template>

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务