vue 3 第三十二章:状态管理(Pinia状态持久化)

news/2024/11/18 3:02:17/

Pinia 的状态持久化

在实际开发中,我们通常需要对状态进行持久化或缓存,以便在应用程序重新加载或离线时仍然能够访问数据。在 Pinia 中,我们可以使用插件来实现状态的持久化和数据缓存。

Pinia 提供了一个名为pinia-plugin-persist的插件,可以用来实现状态的持久化。该插件会将状态存储在本地存储中,以便在应用程序重新加载时恢复状态。以下是使用该插件的步骤:

  1. 安装插件
# npm
npm install pinia-plugin-persist# yarn
yarn add pinia-plugin-persist# pnpm
pnpm add pinia-plugin-persist
  1. 在创建 Pinia 实例时使用插件
import { createApp } from "vue";
import { createPinia } from "pinia";
import piniaPersist from "pinia-plugin-persist";
import App from "./App.vue";
import "@/assets/main.css";
import "@/assets/index.scss";const pinia = createPinia();
pinia.use(piniaPersist);createApp(App).use(pinia).use(router).mount("#app");
  1. Typescript
// tsconfig.json
{"compilerOptions": {"types": ["pinia-plugin-persist"]},
}
  1. 基本使用
import { ref, computed } from "vue";
import { defineStore } from "pinia";export const useCounterStore = defineStore("counter",() => {const count = ref(1);const total = ref(10);const doubleCount = computed(() => count.value * 2);function increment() {count.value++;}function decrement() {count.value--;}return { count, total, doubleCount, increment, decrement };},{persist: {enabled: true,},}
);

开启enabled之后,默认会对整个Storestate内容进行sessionStorage储存。

![在这里插入图片描述](https://img-blog.csdnimg.cn/b98461d5f9c342358a304109a31f53d9.png

  1. 配置选项(指定字段存储,并且指定存储方式)

strategies 是一个选项对象,用于配置持久化插件的行为。以下是一些常见的选项:

  • key:自定义存储的 key,默认是defineStore的第一个参数,即store.id
  • storage:本地存储对象,默认为window.sessionStorage
  • paths:state 中的字段名,按组打包储存

以下是一个完整的示例:

import { ref, computed } from "vue";
import { defineStore } from "pinia";export const useCounterStore = defineStore("counter",() => {const count = ref(1);const total = ref(10);const doubleCount = computed(() => count.value * 2);function increment() {count.value++;}function decrement() {count.value--;}return { count, total, doubleCount, increment, decrement };},{persist: {enabled: true,strategies: [{// 自定义存储的 key,默认是 defineStore 的第一个参数,即 store.idkey: "local",// 可以指定任何 extends Storage 的实例,默认是 sessionStoragestorage: localStorage,// state 中的字段名,按组打包储存paths: ["count", "total"],},],},}
);

此时数据存储在了localStorage中:

在这里插入图片描述


http://www.ppmy.cn/news/230378.html

相关文章

黑苹果安装常见问题汇总

安装完进入系统后显示显存7MB,非常卡顿? 多半是核显没有正确驱动,解决方法是定制Framebuffer信息,驱动核显。 我修改了config.plist文件后进不去系统了,怎么办? 首先,对config.plist做任何修…

为什么需要黑苹果(hackintosh)

简单的来讲,苹果的产品线可以分为基于IOS ARM的移动触屏设备和基于Mac OS Intel X86的电脑设备,无疑苹果移动设备的成功帮助苹果坐实了世界市值最高的公司,相比之下其个人电脑产品因与微软具有极高的市场占有率的Windows产品并不能很好的兼…

使用黑苹果的一些软件

这里是我日常使用黑苹果收集的一些软件 下载地址:https://pan.baidu.com/s/1fz5qFnbH3zgv1yg7KLuKkw 密码:6vpu 键盘映射软件,能把ALt修改为cmd(专治小米游戏本少颗win键的键盘),还能修改F功能键,如增减音量、切换歌…

安装黑苹果常见问题总结

黑苹果字体模糊? 由于macOS使用了HiDPi技术以达到更高的每英寸像素率,即缩放,因此普通显示器只要不是4k分辨率,安装黑苹果后一定会遇到字体模糊的问题,解决方法可以阅读我往期发布的文章。 为什么用iStat Menus无法检…

黑苹果系统发热与续航

黑苹果系统发热与续航 黑苹果系统的安装,最难的在EFI文件的配置上,EFI配置完成后,95%的功能可以实现,剩下的就留给白苹果了,世界上没有完美的黑苹果,只有极限无限趋近于白苹果的黑苹果。 注:本…

苹果紧急修复两个已遭利用的 0day,影响 iPhone 和 Mac设备

聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 苹果发布紧急安全更新,修复了被用于攻陷 iPhone、Mac 和 iPad 的两个0day 漏洞。 苹果公司在上周五发布的安全公告中指出,“苹果收到关于该漏洞可能已遭活跃利用的一…

奔腾cpu可以安装黑苹果吗_黑苹果是什么?黑苹果对硬件有什么要求?

对于黑苹果,很多小伙伴想知道黑苹果对硬件有哪些要求,那么黑苹果对硬件有什么要求?小伙伴们是不是还不是很清楚呢?下面小编就给大家分享一下,希望对大家有帮助哦~ 黑苹果硬件要求详细介绍 一、CPU 笔记本:因…

黑苹果 电脑关机是因为发生了问题_能量报 | 苹果部分产品免费保修4年 | 最诚实的手机厂商...

最诚实的手机厂商 曾经主打女性手机市场的朵唯,近日因为一款宣传海报像小米,背部摄像头神似iPhone 11 Pro的的手机火了。 这款名叫朵唯手机X11 Pro的手机,售价是699元,有翡冷翠、极光色和天空之境三种配色,宣传海报像…