vuejs3 pinia持久化存储

pinia地址:

开始 | Pinia

插件地址:

快速开始 | pinia-plugin-persistedstate

先安装pinia

javascript 复制代码
npm install pinia

再安装插件

安装pinia后,再安装这个插件

javascript 复制代码
npm i pinia-plugin-persistedstate

全局中引入持久化插件

在src目录下的main.ts或者main.js里

javascript 复制代码
//main.ts或者main.js里

import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia'

//注意下面没有{}
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'

const app = createApp(App)
const pinia = createPinia()             //创建pinia
pinia.use(piniaPluginPersistedstate)    //把pinia插件,注册到pinia中
app.use(pinia)
app.mount('#app')

持久化插件配置:

stores目录下的userStore.js (根据实际使用选择)

所有数据持久化配置。

javascript 复制代码
import {ref, computed, reactive} from 'vue'
import {defineStore} from 'pinia'  //只引入pinia就可以了

export const useUserStore = defineStore('user', () => {
        const userInfo = reactive({})
        return {userInfo}
    }, 
    //这里是第三个参数
    {
        persist: true  //加上这一个,所有的数据都可以持久化
    }
)

指定数据持久化配置。

javascript 复制代码
import {ref, computed, reactive} from 'vue'
import {defineStore} from 'pinia'  //只引入pinia就可以了

export const useUserStore = defineStore('user', () => {
        const userInfo = reactive({})
        return {userInfo}
    }, 
    //这里是第三个参数
    {
         persist: {
            paths: ['name', 'info.des'] //指定 name, info.des持久化
         },
    }
)

使用插件:

赋值,持久化的数据

javascript 复制代码
<script setup>
//引入配置好的store
import {useUserStore} from "@/stores/userStore.js"
//实例化store
const userStore = useUserStore()




//...一堆逻辑后面赋值且自动持久化,使用的是'所有数据持久化配置'
 userStore.$patch({
    userInfo:res2.data
})
</script>

调用,持久化的数据

javascript 复制代码
<script setup>
//引入配置好的store
import {useUserStore} from "../stores/userStore.js";
//实例化store
const userStore = useUserStore()
</script>


<template>
<!--template中调用store内的信息-->
  <div>
    {{ userStore.userInfo }}
  </div>
</template>

清空,持久化的数据

javascript 复制代码
<script setup>
//引入配置好的store
import {useUserStore} from "@/stores/userStore.js"
//实例化store
const userStore = useUserStore()


//清空持久化数据userInfo
  userStore.$patch({
    userInfo:{}
  })

//下面这种写法,虽然可以清空,但是无法再次赋值,强制不推荐使用
//userStore.userInfo = {}
</script>
相关推荐
paopaokaka_luck8 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
paopaokaka_luck10 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
鶴哥只手遮天12 小时前
jQuery 4.0 源码架构与工程实践-第 10 章 尺寸、几何与显隐
前端·javascript·jquery
米米商聊14 小时前
图标能点,按钮就可用了吗?键盘、名称与收藏状态
前端·javascript
漫天转悠15 小时前
Vue3白屏排查实录-Transition与多根模板
vue.js·1024程序员节
技术小甜甜15 小时前
【Cursor】Skill 被标黄色警告,怎么改成合格的 SKILL.md
开发语言·javascript·ai编程·cursor·1024程序员节·ai agent·skills
qetfw17 小时前
Bash 函数与流程控制:read、if、for、case 验证
linux·前端·javascript·bash
jason.zeng@150220717 小时前
Nginx 配置详解(静态 HTML、下载目录、API 反向代理三套场景)
java·vue.js·1024程序员节
鬼手点金17 小时前
从 API 消息到模型 Token:Chat Template
java·前端·javascript·数据库·人工智能·深度学习·1024程序员节
Mr.Pascal19 小时前
Javascript之什么是作用域?
javascript·1024程序员节