解决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 相关文章推荐
Wordpress ThickBox 添加“查看原图”效果代码
Dec 11 Javascript
浅谈JavaScript实现面向对象中的类
Dec 09 Javascript
node.js调用C++开发的模块实例
Jul 03 Javascript
浅谈js基本数据类型和typeof
Aug 09 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
JavaScript获取键盘按键的键码(参照表)
Jan 10 Javascript
Bootstrap表单简单实现代码
Mar 06 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
Jul 27 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 jQuery
vant中的toast层级改变操作
Nov 04 Javascript
JavaScript实现无限轮播效果
Nov 19 Javascript
详解CocosCreator消息分发机制
Apr 16 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判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
深入PHP FTP类的详解
2013/06/13 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
js实现继承的5种方式
2015/12/01 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
JavaScript你不知道的一些数组方法
2017/08/18 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
如何利用node转发请求详解
2020/09/17 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
Python中方法链的使用方法
2016/02/23 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
python基于property()函数定义属性
2020/01/22 Python
python实现文字版扫雷
2020/04/24 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
香港士多网上超级市场:Ztore
2021/01/09 全球购物
档案接收函范文
2014/01/10 职场文书
一年级班主任感言
2014/03/08 职场文书
三八节主持词
2014/03/17 职场文书
宣传普通话标语
2014/06/27 职场文书
绘画专业自荐信
2014/07/04 职场文书
法人身份证明书
2015/06/18 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android