解决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 常用方法基础教程
Feb 06 Javascript
jQuery获取节点和子节点文本的方法
Jul 22 Javascript
JavaScript中判断整字类型最简洁的实现方法
Nov 08 Javascript
如何使用HTML5地理位置定位功能
Apr 27 Javascript
使用JavaScript实现旋转的彩圈特效
Jun 23 Javascript
谈谈JavaScript异步函数发展历程
Sep 29 Javascript
jQuery绑定事件的几种实现方式
May 09 Javascript
微信小程序-获得用户输入内容
Feb 13 Javascript
js 输入框 正则表达式(菜鸟必看教程)
Feb 19 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
Jun 28 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
Element InputNumber 计数器的实现示例
Aug 03 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
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
python二分查找算法的递归实现方法
2016/05/12 Python
Python切片工具pillow用法示例
2018/03/30 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
python 高阶函数简单介绍
2021/02/19 Python
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
法国体育用品商店:GO Sport
2019/10/23 全球购物
Linux的主要特性
2014/10/06 面试题
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
转预备党员政审材料
2014/02/06 职场文书
大学生在校表现评语
2014/12/31 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
PHP中->和=>的意思
2021/03/31 PHP
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
PyTorch device与cuda.device用法
2022/04/03 Python
python如何为list实现find方法
2022/05/30 Python
mysql数据库隔离级别详解
2022/06/16 MySQL