网站首页 > 技术文章 正文
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;
猜你喜欢
- 2024-09-27 利用Vue中keep-alive,快速实现页面缓存
- 2024-09-27 vue i18n实现语言切换 vue怎么设置中文版本
- 2024-09-27 Node + Express + Mysql: Todo List项目让你成全栈
- 2024-09-27 vue仓库、组件间通信、前后台数据交互、前端储存数据大汇总
- 2024-09-27 多人群聊实现其实很简单:Nodejs+WebSocket+Vue轻松实现Web IM
- 2024-09-27 Todo List:Node+Express 搭建服务端连接Mysql - 第五章(第1节)
- 2024-09-27 推荐一个Vue3搭建的低代码数据可视化开发平台
- 2024-09-27 Vue认知及使用 vue了解
- 2024-09-27 Vue项目中实现用户登录及token验证
- 2024-09-27 vue3+ts项目搭建和封装(下篇) vue2.0 ts
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)