解决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 相关文章推荐
基于jQuery的可用于选项卡及幻灯的切换插件
Mar 28 Javascript
js面向对象 多种创建对象方法小结
May 21 Javascript
div模拟滚动条效果示例代码
Oct 16 Javascript
js用正则表达式来验证表单(比较齐全的资源)
Nov 17 Javascript
浏览器窗口加载和大小改变事件示例
Feb 27 Javascript
javascript实现的一个随机点名功能
Aug 26 Javascript
Js实现无刷新删除内容
Apr 29 Javascript
简单讲解jQuery中的子元素过滤选择器
Apr 18 Javascript
jquery在vue脚手架中的使用方式示例
Aug 29 jQuery
JavaScript实现新年倒计时效果
Nov 17 Javascript
使vue实现jQuery调用的两种方法
May 12 jQuery
Vue实现简单计算器
Jan 20 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
星际争霸中的热键
2020/03/04 星际争霸
整合了前面的PHP数据库连接类~~做成一个分页类!
2006/11/25 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
python list转矩阵的实例讲解
2018/08/04 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
python中实现控制小数点位数的方法
2019/01/24 Python
python使用selenium实现批量文件下载
2019/03/11 Python
python获取array中指定元素的示例
2019/11/26 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
元旦晚会感言
2014/03/12 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
奠基仪式策划方案
2014/05/15 职场文书
歌剧魅影观后感
2015/06/05 职场文书
2016年教师节感言
2015/12/09 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers