解决vuex数据页面刷新后初始化操作


Posted in Javascript onJuly 26, 2020

在vue项目的开发中经常会用到vuex来进行数据的存储,然而在开发过程中会出现刷新后页面的vuex的state数据初始化问题!下面是我用过的解决方法

1、利用storage缓存来实现vuex数据的刷新问题

我们可以在mutation等vuex的方法中对于数据进行改变时,将数据同时存储进我们的本地浏览器缓存中;下面是我在mutation中写的方法;

解决vuex数据页面刷新后初始化操作

同步将数据的更改保存,也可以在页面调用vuex的mutation方法时同步更改;但是这种方法只能针对少量的数据需要保持不刷新,在真正的卡发中并不适用

2、利用已有的插件来进行保存新状态

一致的插件中,我目前使用的是vuex-along插件,该插件使用非常方便简洁。

解决vuex数据页面刷新后初始化操作

通过 cnpm i vuex-along -D下载插件,在进行引入,在store里面通过plugin来使用,这样就能将所有的state的数据都进行保存,不回应为刷新而更改,当然如果你想仅对某些数据进行保存,也可以使用对应的插件的api来实现,具体的api请看github;

上面的代码仅为展示vuex-along插件的使用,项目的真实写法并不规范,对于一般项目会将vuex的每个模块独立拆分出来,分别进行管理

解决vuex数据页面刷新后初始化操作

同时在项目中我们也都尽量使用辅助函数来实现vuex的管理,而不会应用原生的写法

解决vuex数据页面刷新后初始化操作

对于state和getter的数据可以在计算属性中来因够用。而mutation和action则在methods方法应用;如果你需要修改计算属性,现在需要设置对应的setter。

以上纯属自己的一点意见,如果需要请采纳!

补充知识:vuex在刷新页面时保持数据不变(vuex状态持久化)

问题:

在 vue 项目中使用 vuex 来进行数据状态的管理,当刷新页面时,vuex 中 state 的数据会出现初始化问题(数据丢失)

解决方法:

1.使用 webStorage 缓存

当浏览器窗口关闭或者刷新时,会触发beforeunload事件,此时,可以使用 webStorage 缓存来实现 vuex 在刷新页面时保持数据不变

created(){
  //在页面加载时读取sessionStorage里的状态信息
  this.$store.state.userInfo = window.sessionStorage.getItem("userInfo") 
  //在页面刷新时将vuex里的信息保存到sessionStorage里
  window.addEventListener("beforeunload", () => {
    window.sessionStorage.setItem("userInfo", this.$store.state.userInfo)
  })
}

2.使用vuex状态持久化插件vuex-persistedstate

vuex-persistedstate插件使用浏览器的本地存储( local storage )对 vuex 的状态( state )进行持久化

安装 vuex-persistedstate:

npm install vuex-persistedstate --save-dev

在store文件夹的 index.js 中使用

//引入vuex-persistedstate
import createPersistedState from 'vuex-persistedstate'
......
export default new Vuex.Store({
 ......
 //配置vuex-persistedstate
 plugins: [createPersistedState(
  //配置将vuex的状态储存到sessionStorage中(默认储存到localStorage中)
  { storage: window.sessionStorage }
 )]
})

以上这篇解决vuex数据页面刷新后初始化操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
ExtJs使用IFrame的实现代码
Mar 24 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
Sep 21 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
JavaScript中的单引号和双引号报错的解决方法
Sep 01 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
Sep 29 Javascript
js变形金刚文字特效代码分享
Aug 20 Javascript
跟我学习javascript的定时器
Nov 19 Javascript
JavaScript实现图片滑动切换的代码示例分享
Mar 06 Javascript
ASP.NET jquery ajax传递参数的实例
Nov 02 Javascript
js is_valid_filename验证文件名的函数
Jul 19 Javascript
bootstrap datepicker插件默认英文修改为中文
Jul 28 Javascript
详解vue beforeEach 死循环问题解决方法
Feb 25 Javascript
Angular利用HTTP POST下载流文件的步骤记录
Jul 26 #Javascript
vue中keep-alive、activated的探讨和使用详解
Jul 26 #Javascript
关于angular浏览器兼容性问题的解决方案
Jul 26 #Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
Jul 26 #Javascript
使用React-Router实现前端路由鉴权的示例代码
Jul 26 #Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
Jul 26 #Javascript
vue 页面回退mounted函数不执行的解决方案
Jul 26 #Javascript
You might like
一些关于PHP的知识
2006/11/17 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
利用PHP如何实现Socket服务器
2015/09/23 PHP
php实现zip文件解压操作
2015/11/03 PHP
PHP-FPM实现性能优化
2016/03/31 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
python绘图库Matplotlib的安装
2014/07/03 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
Python爬虫使用脚本登录Github并查看信息
2018/07/16 Python
python实现视频分帧效果
2019/05/31 Python
基于python 凸包问题的解决
2020/04/16 Python
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
上课看小说检讨书
2014/02/22 职场文书
离婚协议书应该怎么写
2014/10/12 职场文书
涨价通知
2015/04/23 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
企业党建工作总结2015
2015/05/26 职场文书
患者身份识别制度
2015/08/06 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
创业计划书之物流运送
2019/09/17 职场文书