解决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闭包 推荐
Mar 01 Javascript
Jquery带搜索框的下拉菜单
May 06 Javascript
js几秒以后倒计时跳转示例
Dec 26 Javascript
javascript页面渲染速度测试脚本分享
Apr 15 Javascript
JS计算网页停留时间代码
Apr 28 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
学习JavaScript设计模式之策略模式
Jan 12 Javascript
javascript如何实现360度全景照片问题汇总
Apr 04 Javascript
AngularJS Select(选择框)使用详解
Jan 18 Javascript
解决Layui中layer报错的问题
Sep 03 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
Oct 14 Javascript
微信小程序仿抖音短视频切换效果的实例代码
Jun 24 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
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
jquery JSON的解析方式
2009/07/25 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
python全栈知识点总结
2019/07/01 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
为什么要用EJB
2014/04/17 面试题
致100米运动员广播稿
2014/02/14 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
学习党章的体会
2014/11/07 职场文书
销售工作决心书
2015/02/04 职场文书
置业顾问岗位职责
2015/02/09 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS