解决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 相关文章推荐
JavaScript中this关键字使用方法详解
Mar 08 Javascript
js类定义函数时用prototype与不用的区别示例介绍
Jun 10 Javascript
控制文字内容的显示与隐藏示例
Jun 11 Javascript
jQuery中:lt选择器用法实例
Dec 29 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
Oct 24 Javascript
使用express搭建一个简单的查询服务器的方法
Feb 09 Javascript
JavaScript计算正方形面积
Nov 26 Javascript
微信小程序日历插件代码实例
Dec 04 Javascript
微信小程序实现吸顶效果
Jan 08 Javascript
jQuery实现简单飞机大战
Jul 05 jQuery
Vue + ts实现轮播插件的示例
Nov 10 Javascript
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
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
IStream与TStream之间的相互转换
2008/08/01 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
2015/03/25 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
js中less常用的方法小结
2017/08/09 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
vue 系列——vue2-webpack2框架搭建踩坑之路
2017/12/22 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
windows下ipython的安装与使用详解
2016/10/20 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
Python之用户输入的实例
2018/06/22 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
党员发展大会主持词
2015/07/03 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
Python中的 No Module named ***问题及解决
2022/07/23 Python