vuex页面刷新后数据丢失的方法


Posted in Javascript onJanuary 17, 2019

1. 原因

(1)js代码是运行在内存中的,代码运行时的所有变量、函数都是保存在内存中。
(2)刷新页面,以前申请的内存被释放,重新加载脚本代码,变量要重新赋值。
(3)要想刷新后数据不丢失就必须把数据存储在外部,例如:Local Storage、Session Storage、Index DB等。这些都是浏览器提供的API,让你可以将数据存储在硬盘上,做持久化存储。

2. HTML5提供的2种客户端存储数据的新方法

localStorage存储数据:

(1)存储的数据是永久性的,永不过期;
(2)作用域是限定在文档源级别的。同源的文档间共享同样的localStorage数据(不论该源的脚本是否真正的访问localStorage)。
他们可以互相读取对方的数据,甚至可以覆盖对方的数据。但是,非同源的文档间互相都不能读取或者覆盖对方的数据。(即使他们运行的脚本是来自同一台第三方的服务器也不行)。

sessionStorage存储数据:

(1)会话,当浏览器关闭时会话结束并清除数据,有时间期限;
(2)存储数据的有效期和存储数据的脚本所在的最顶层的窗口或者是浏览器标签页是一样的,一旦窗口或者标签页被永久关闭了,

那么所有通过sessionStorage存储的数据也都被删除了。

3.具体实现(登入后保存状态,退出后移除状态)

// vuex mutations
const mutations = {
  setToken(state, token) {
    // 保存用户认证Token
    sessionStorage.setItem('token', token);
    state.token = token;
  },
  setUser(state, user) {
    // 保存用户信息
    sessionStorage.setItem('user', JSON.stringify(user));
    state.user = user;
  },
  // 注销登录,清除token
  logout(state) {
    state.token = null;
    state.user = null;
    sessionStorage.removeItem('token');
    sessionStorage.removeItem('user');
  }
};

// vuex getters
const getters = {
  getToken(state){
    if(state.token === null){
      state.token = sessionStorage.getItem('token')
    }
    return state.token;
  },
  // 获取当前用户登录信息
  getUser(state) {
    if(state.user === null) {
      state.user = JSON.parse(sessionStorage.getItem('user'));
    }
    return state.user;
  }
};

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
利用JS实现浏览器的title闪烁
Jul 08 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
Nov 19 Javascript
node.js中的fs.open方法使用说明
Dec 17 Javascript
JQuery实现动态添加删除评论的方法
May 18 Javascript
代码分析jQuery四种静态方法使用
Jul 23 Javascript
jQuery实现伪分页的方法分享
Feb 17 Javascript
artDialog+plupload实现多文件上传
Jul 19 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
Oct 10 Javascript
微信扫码支付零云插件版实例详解
Apr 26 Javascript
js 获取html5的data属性实现方法
Jul 28 Javascript
vue获取时间戳转换为日期格式代码实例
Apr 17 Javascript
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
jquery获取img的src值实例介绍
Jan 16 #jQuery
js中int和string数据类型互相转化实例
Jan 16 #Javascript
JavaScript设计模式之观察者模式实例详解
Jan 16 #Javascript
JavaScript设计模式之命令模式实例分析
Jan 16 #Javascript
js删除数组中某几项的方法总结
Jan 16 #Javascript
JavaScript设计模式之责任链模式实例分析
Jan 16 #Javascript
JavaScript设计模式之代理模式实例分析
Jan 16 #Javascript
You might like
php+mysql开发中的经验与常识小结
2019/03/25 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
django中静态文件配置static的方法
2018/05/20 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
500行python代码实现飞机大战
2020/04/24 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
建筑专业自我鉴定
2013/10/22 职场文书
车间班组长岗位职责
2013/11/13 职场文书
加工操作管理制度
2014/01/19 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
环保建议书300字
2014/05/14 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
建议书的格式及范文
2015/09/14 职场文书
员工给公司的建议书
2019/06/24 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
浅谈PHP7中的一些小技巧
2021/05/29 PHP
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers