pinia数据持久化

pinia数据持久化

1、创建一个持久化插件,将数据保存在本地存储中

// 创建一个持久化插件,将数据保存在本地存储中
const persist = createPersist({
  // 指定要持久化的 store 模块,可以是一个或多个
  // 这里我们只持久化一个偏好设置模块
  store: pinia.store('preference'),

  // 指定持久化的键(存储在本地存储中的键)
  key: 'my-app-preference',

  // 指定存储引擎,可以是 localStorage、sessionStorage 或其他自定义引擎
  // 这里使用默认的 localStorage
  storage: localStorage,
});

// 在 Pinia 实例中注册持久化插件
pinia.use(persist);

app.use(pinia);
app.mount('#app');

2、创建一个 Pinia store 模块usePreferenceStore 来管理用户的偏好设置: 其中的state喝actions都是可以直接被使用的,

import { defineStore } from 'pinia';

export const **usePreferenceStore** = defineStore('preference', {
  state: () => ({
    theme: 'light', // 默认主题
    language: 'en', // 默认语言
  }),

  actions: {
    // 设置主题
    setTheme(theme) {
      this.theme = theme;
    },

    // 设置语言
    setLanguage(language) {
      this.language = language;
    },
  },
});
persist: {
    enabled: true, //开启
    strategies: [
      {
        key: "USER_**PREFERENCE**",
        storage: sessionStorage,
        paths: ["theme", "language"],
      },
    ],
  },

3、使用 Pinia store 来管理和持久化用户的偏好设置:

// components/Preference.vue

<template>
  <div>
    <h2>用户偏好设置</h2>
    <label>
      主题:
      <select v-model="theme">
        <option value="light">浅色主题</option>
        <option value="dark">深色主题</option>
      </select>
    </label>
    <br />
    <label>
      语言:
      <select v-model="language">
        <option value="en">英语</option>
        <option value="es">西班牙语</option>
      </select>
    </label>
  </div>
</template>

<script>
import { computed } from 'vue';
import { usePreferenceStore } from '../store/preference';

export default {
  setup() {
    // 获取偏好设置 store
    const preferenceStore = usePreferenceStore();

    // 使用 computed 属性来读取和设置偏好设置
    const theme = computed({
      get: () => preferenceStore.theme,
      set: (value) => preferenceStore.setTheme(value),
    });

    const language = computed({
      get: () => preferenceStore.language,
      set: (value) => preferenceStore.setLanguage(value),
    });

    return {
      theme,
      language,
    };
  },
};
</script>
```## 标题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值