当前位置:首页 > 技术分析 > 正文内容

Vuex 刷新页面后数据就消失了,怎么保存数据持久化?

ruisui883个月前 (02-03)技术分析25

1 .如果想让某些数据页面刷新之后不消失,那就可以结合本地存储做到数据持久化
2 .比如之前的搜索记录,还有一些需要依赖的数据。比如本次活动的代号存下来,让我在一段时间内,根据这个编号来确定相关代号代表的一批数据可以缓存在本地,一遍在下一次请求的时候快速返回
3 .实现原理:在mutations定义的方法里对vuex的状态操作的同时对存储也做相应的操作
4 .插件vue-savedata,vuex-persistedstate
5 .实际实现:监听浏览器的刷新,刷新之前把vuex存在本地,在路由拦截处获取本地储存,放进vuex并删除本地存储,可以自由控制存localstorage和sessionStorage,完全避免插件来消耗性能。
6 .不同页面之间的数据传值,vuex适合组件间传值。
7 .有的问题研究一分钟和一个小时,是会发现不同的问题。

区别


1 .vuex存储在内存。localstorage则以文件的方式存储在本地
2 .应用场景:vuex用于组件之间的传值,localstorage则用于不同页面之间的传值
3 .永久性:当刷新页面时vuex存储的值会丢失。localStorage不会删除
4 .localstorage:只能进行简单的数据读写,对不同组件之间读取数据并做数据转化时,需要对每个读写操作都写一遍代码,重点是存放
5 .vuex是状态管理,重点是管理数据,一个是数据容器,一个是数据管理器。


vue-savedata 持久化

createPersiste([options])

下列选项(默认保存store中的每个数据到本地 )

(温馨提示: LS即Localstorage本地存储, SS即sessionStorage本地存储, LS、SS可同时使用,也可单独使用 )

可以为您的特定需求配置插件: (参数都是可选的:有默认值)

  • saveName <String>: 本地save的key 默认: savedata
  • ciphertext <Boolean>: 是不是密文存本地(base64) 默认 false
  • mode <String>: 默认存储模式(LS,SS配置不存在时有效) 默认: LS
  • MMD <Number>: 模块 深度合并, 深度值 默认:2(如果出现数据丢失可以尝试把这个开高一点)
  • SS <Object> || <Array>: { storePath: xx, module: xx } 注:storePath:(和Vuex中的option.modules:{key:value}的key,一,一对应)
  • SL <Object> || <Array>: { storePath: xx, module: xx } 同上, 支持多个模块,传入数组
import createPersiste from 'vue-savedata'
import module1 from './modules/module1'
import module2 from './modules/module2'
const persiste = createPersiste({
    ciphertext: true, // 加密存本地, 默认为false
    LS: {
        module: module1,
        storePath: 'module100' // __storePath:(和Vuex中的option.modules:{key:value}的key,一,一对应)__
    },
    SS: {
        module: module2,
        storePath: 'module2' 
    }
})
/**
 * 
 * 数组 支持传入多个模块,相应,__storePath:和Vuex中的option.modules:{key:value}的key,一一对应__
 * const persiste = createPersiste({
    LS:[{
        module: module1,
        storePath: 'module100' 
    },...],
    SS: [{
        module: module2,
        storePath: 'module2' 
    },...]
})
 ***/
const store = new Vuex.Store({
  	// ...
    modules: {
        module100: module1,
        module2
    },
    plugins: [persiste],
})

vuex-persistedstate 保存数据持久化

1.store/index.js

import Vue from "vue";
import Vuex from "vuex";

import modules from "./modules";
import getters from "./getters";
import createPersistedState from "vuex-persistedstate";

Vue.use(Vuex);

const createPersisted = createPersistedState({
    storage: window.sessionStorage,
    key: 'CHEN',
    reducer (val) {
        return {
            // 只储存state中的某些字段 注意:键值对名字要一致
            // tagsView: val.tagsView,
            // user: val.user
            home: val.home
        };
    }
});


const store = new Vuex.Store({
    modules: {...modules},
    getters,
    plugins: [createPersisted]
});
export default store;



扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1512.html

标签: vue 多页面
分享给朋友:

“Vuex 刷新页面后数据就消失了,怎么保存数据持久化?” 的相关文章

Ubuntu Linux 24.04 LTS发行版现已开放下载

IT之家 4 月 25 日消息,Ubuntu 24.04 长期支持版(LTS)“Noble Numbat” 现已发布,有需要的用户请通过官网下载发行版 ISO 镜像进行安装。Ubuntu 24.04 采用了 Linux 6.8 内核,可利用 Netplan 在桌面上配置网络连接,还配备了现代化的桌面...

总结了Vue3的七种组件通信方式,别再说不会组件通信了

写在前面本篇文章是全部采用的<script setup>这种组合式API写法,相对于选项式来说,组合式API这种写法更加自由,具体可以参考Vue文档对两种方式的描述。本篇文章将介绍如下七种组件通信方式:propsemitv-modelrefsprovide/injecteventBusv...

GitLab-合并请求

描述合并请求可用于在您对项目进行的其他人员之间交换代码,并轻松与他们讨论更改。合并请求的步骤步骤1-在创建新的合并请求之前,GitLab中应该有一个创建的分支。您可以参考本章来创建分支-步骤2-登录到您的GitLab帐户,然后转到“ 项目”部分下的项目 -步骤3-单击“ 合并请求”选项卡,然后单击“...

HTML5最新版本介绍

HTML5是HTML4.01和XHTML1.0之后超文本标记语言的最新版本,由一群自由思想者设计,最终实现了多媒体支持、交互性、更智能的表单和更好的语义标注。 HTML 5不只是 HTML规范的最新版本,它是用于生成现代 Web内容的一系列相关技术的总称,其中最重要的三个技术是:HTML5核心规范...

HTML5+眼球追踪?黑科技颠覆传统手机体验

今天,iH5工具推出一个新的神秘功能——眼动追踪,可以通过摄像头捕捉观众眼球活动!为了给大家具体演示该功能的使用,我做了一个案例,供大家参考。实际效果如下:案例比较简单,就是通过眼动功能获取视觉焦点位置,剔除用户看中的牌。现在,舞台的属性中多了一个“启用眼动”的选项,另外,还多了一个“启用摄像头”的...

vue-router是如何解析query参数呢? #前端

vue-router 中的 query 解析。1. 大家好,我是龙仔。今天来分享 vue-router 是如何解析快乐参数的,因为使用 vue 路由会传 query 参数和快乐参数,所以从 vue 的角度来看如何解析传递的快乐参数。2. 基础知识大家应知道,快乐参数结构如:a、b、c、a、b、c、a...