Pinia 数据持久化储存(pinia-plugin-persistedstate),简单入门使用(有手就行系列)

文章介绍了如何在Vue项目中使用pinia-plugin-persistedstate插件来实现状态的持久化存储,包括安装插件、在main.js中配置、在store中启用持久化以及检查SessionStorage的缓存情况。示例代码展示了在piniastore中定义store并配置持久化的步骤。
摘要由CSDN通过智能技术生成

1.安装依赖npm install  pinia-plugin-persistedstate

2.在main.js导入

import piniaPluginPersistedstate from 'pinia-plugin-persistedstate';
app.use(createPinia().use(piniaPluginPersistedstate))

完整代码参考

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate';
import App from './App.vue'
import router from './router'
import vant from 'vant';
import 'vant/lib/index.css';

import './assets/main.css'

// 请求接口封装
import http from './http/http'
window.$http = http

// 组件与组件之间通信
import mitt from "mitt"
window.$mybus = mitt()

import Vconsole from 'vconsole';

const vConsole = new Vconsole();


const app = createApp(App)

app.use(createPinia())
app.use(createPinia().use(piniaPluginPersistedstate))

app.use(router)
app.use(vant)
app.use(vConsole);

// 定义全局Loading组件
import MyLoading from './components/MyLoading.vue';
app.component('MyLoading', MyLoading)
//定义全局Svg组件
import SvgIcon from '@/components/SvgIcon.vue';
app.component('SvgIcon', SvgIcon)

app.mount('#app')
const onFail = () => {
    console.log("失败",);
}
const onSuccess = () => {
    console.log("成功",);
}
document.addEventListener("deviceready", () => {
    AppUpdate.checkAppUpdate(onSuccess, onFail, import.meta.env.VITE_APP_UPD_URL);
    StatusBar.overlaysWebView(true);
    // cordova.plugins.backgroundMode.enable();//软件保活
}, false);

3.开启存储

  persist: {

    enabled: true,

  },

参考代码

import { defineStore } from 'pinia';
export const useSelectAnnotationLayerStore = defineStore('selectAnnotationLayerelectAnnotationLayerStore', {
  state: () => ({
    selectAnnotationLayer: {
      pointLayer: '物探测点',
      lineLayer: '物探测线',
      polygonLayer: '不良地质体',
    },
    selectVectorLayerCheckedList: ['物探测点', '调绘点', '点采集', '物探测线', '界线', '不良地质体'], //选中的矢量图层
    selectGeologicalLayerCheckedList: [], //选中的区域地质图层
    allGeologicalLayerList: [{ label: '广东构造体系图', value: 'L4674fbe9a3c24eba8f6b2bc4ca88349d' }],
  }),
  getters: {},
  actions: {
    SET_SELECT_ANNOTATION_LAYER(data) {
      this.selectAnnotationLayer = data;
    },
    SET_SELECT_VECTORLAYER_CHECKED(data) {
      this.selectVectorLayerCheckedList = data;
    },
    SET_SELECT_GEOLOGICAL_LAYER_CHECKED(data) {
      this.selectGeologicalLayerCheckedList = data;
    },
    SET_ALL_GEOLOGICAL_LAYER_CHECKED(data) {
      this.allGeologicalLayerList = data;
    },
  },
  persist: {
    enabled: true,
  },
});

4.查看SessionStorage是否缓存成功

5.补充

默认将数据存放在浏览器的localstore。

将store的state中的数据进行部分缓存(使用paths)

  persist: {
    enabled: true,
    paths: ['selectGeologicalLayerCheckedList', 'allGeologicalLayerList'],
  },

按图上搜到的方法并不可以,可能api过时了,需要的可以参考官方文档

Configuration | pinia-plugin-persistedstate

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为您提供 Pinia 数据持久化储存插件(pinia-plugin-persistedstate)的详细代码配置。 首先,您需要安装 `pinia-plugin-persistedstate` 插件: ``` npm install pinia-plugin-persistedstate ``` 然后,在您的 Vue.js 项目中,您需要创建一个 Pinia 实例,并使用 `use` 方法加载 `pinia-plugin-persistedstate` 插件: ```javascript import { createPinia } from 'pinia' import { createPersistedState } from 'pinia-plugin-persistedstate' const pinia = createPinia() pinia.use(createPersistedState({ key: 'my-app-state', // 存储在本地存储中的键名 initialState: () => ({ // 初始状态 count: 0, todos: [] }), storage: window.localStorage // 存储在哪个存储中(可选) })) ``` 以上代码中,我们使用了 `createPersistedState` 方法创建一个持久化状态插件实例,并将其传递给 `pinia.use()` 方法以加载插件。 在 `createPersistedState` 方法中,您需要传递一个对象参数,包含以下选项: - `key`:在本地存储中存储状态的键名。 - `initialState`:状态的初始值。这可以是一个对象或一个函数,该函数返回一个对象。 - `storage`:指定存储状态的存储对象。默认是 `window.localStorage`。 现在,您可以在 Pinia store 中使用持久状态了。例如: ```javascript import { defineStore } from 'pinia' export const useCounterStore = defineStore('counter', { state: () => ({ count: 0 }), actions: { increment() { this.count++ }, decrement() { this.count-- } } }) ``` 以上代码中,我们定义了一个简单的计数器存储。现在,我们可以在组件中使用 `useCounterStore`: ```html <template> <div> <p>Count: {{ count }}</p> <button @click="increment">+</button> <button @click="decrement">-</button> </div> </template> <script> import { useCounterStore } from './store' export default { setup() { const counterStore = useCounterStore() return { count: counterStore.count, increment: counterStore.increment, decrement: counterStore.decrement } } } </script> ``` 现在,每当用户增加或减少计数器时,状态都会自动持久化到本地存储中。当用户刷新页面或重新打开应用程序时,状态将从本地存储中自动加载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值