Vue2解决pinia刷新后数据丢失的问题

Pinia:官网

Pinia 是一个 Vue.js 状态管理库,如果你在组件中修改了 store 中的数据并刷新了界面,Pinia 会将 store 中的数据重置为初始值,从而导致数据丢失的问题。

这里给出vue2的解决方案:

可以使用 Pinia 的 Persist 插件,该插件可以将 Pinia 的 store 数据持久化到本地存储中,这样当你刷新页面时,store 中的数据不会丢失。可以参考文档:文档

安装Persist ,选择你喜欢的包管理器

# yarn
yarn add pinia-plugin-persist
# npm
npm install pinia-plugin-persist

main.js文件

import { createPinia, PiniaVuePlugin } from 'pinia' //vue2需要引入PiniaVuePlugin 
import piniaPluginPersist from 'pinia-plugin-persist'//引入pinia数据持久化插件

Vue.use(PiniaVuePlugin)
const pinia = createPinia()//创建pinia的实例
pinia.use(piniaPluginPersist);

new Vue({
  router,
  render: h => h(App),
  pinia,
}).$mount('#app')

 articeId.js,这里我是保存文章Id,所以是这个文件,根据官方文档,在src/stores下创建该文件

import { defineStore } from 'pinia'

// 你可以对 `defineStore()` 的返回值进行任意命名,但最好使用 store 的名字,同时以 `use` 开头且以 `Store` 结尾。(比如 `useUserStore`,`useCartStore`,`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
export const useArticleIdsStore = defineStore('articleId', {
  // 其他配置...
  persist: {
    enabled: true,//开启数据持久化
    strategies: [
      {
        key: 'articleId',//给一个要保存的名称
        storage: localStorage,// localStorage 存储方式为本地存储
      }
    ]
  },
  state:()=>{
    //需要保存的数据,初始值为0
    return {articleId:0}
  },
  actions:{

  }
})

使用样例:

import { useArticleIdsStore } from '@/stores/articleId'
const articleIdsStore = useArticleIdsStore();
    methods: {
        getArticle() {
            //获取存储的articleId值
             const articleId = articleIdsStore.articleId;
            //其他操作...
        }, 
    },

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡卡卡罗特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值