详解刷新页面vuex数据不消失和不跳转页面的解决


Posted in Javascript onJanuary 30, 2018

先说点什么

vuex和路由拦截这一块捣鼓的有一段时间了,总算是爬出来了,特地来分享一下,首先声明没有什么基础介绍,用的是登录状态存储sessionStorage的方法!!!

进入正题

刷新

刷新相当与重启项目,之前获取到的数据也只是通过store暂存起来,项目关闭时就不见了,这有些像电脑重启,存储在RAM的数据会消失。但是储存在sessionstorage、localstorage和cookie里的内容不会消失.

Vuex

方法思路

首先得熟悉vuex,官网中介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,也就是说vuex中的store中的数据都是临时的,都是一些变量,页面刷新重新加载,所有都清空,并且已经在页面中没有进行二次登陆,vuex中就一直是空的,所以就分生出了几个方法

1.因为sessionstorage(关闭页面会消失)、localstorage和cookie刷新页面数据不会消失,所以可以把所有请求到的数据都储存在里边,用的时候再取

2.使用vuex插件

3.登录的时候把token和登录状态(自定义的)赋值给sessionstorage,当刷新页面的时候(路由跳转)从 sessionstorage中获取token和登录状态赋值给store,就会自己重新请求相关页面的数据

我思考过后我选择了方法3,只不过这个方法要和路由拦截结合起来,后面路由完事一起贴代码

代码

index

详解刷新页面vuex数据不消失和不跳转页面的解决

actions

// 登录
 Login({ commit, state }, userInfo) {
  return new Promise((resolve, reject) => {
   login(userInfo).then(response => {
    let token = response.data.token;
    commit('SET_TOKEN', token);
    sessionStorage.setItem('token', token);  //获取到新的token的时候赋值给sessionStorage

    commit('SET_ISLOGIN', true);  // 登录成功修改store中的登录状态
    resolve()
   }).catch(error => {
    reject(error)
   })
  })
 },

路由

简单介绍: 路由拦截就相当于路由的'生命周期',在路由的不同时间段插入一个方法,可以在此时间段想要做什么事情,本次只在路由跳转前搞事情,所以只使用router.beforeEach((to, from, next) => { // ... })即可,具体内容官网都很详细

main.js

router.beforeEach((to, from, next) => {
 let isLogin = sessionStorage.getItem('isLogin');
 let token = sessionStorage.getItem('token');
 let id = sessionStorage.getItem('id');
 if (to.meta.requireAuth) {  // 判断是否有权限
  if (!store.state.isLogin && !isLogin && to.path !== '/login') {  // store和sessionStorage中登录状态都为false并且跳转到 不是登录的页面时 都强行跳转到登录页面  
   next({
    path: '/login',
   });
  } else if (!isLogin && to.path !== '/login') {  // 已经在登录页面进入首页的时候
   sessionStorage.setItem('isLogin', store.state.isLogin);
   next();
  } else if (isLogin && to.path !== '/login') {  // 登录进入后刷新页面时
   store.commit('SET_TOKEN', token);
   store.commit('SET_ISLOGIN', isLogin);
   store.commit('SET_ID', id);
   next();
  } else {
   next();
  }
 }
 else {
  next();
 }
});


1.路由拦截我是写在main.js文件中的,要注意 一定要写在vue挂载的上面(new Vue)
2.当点击登录的时候 actions中的登录方法要早于路由拦截
3.退出的登录的时候 不要忘记把sessionStorage里的变量删除

最后再说点什么

希望本文可以给你提供一些帮助,这是我最高兴的,觉得我有写的不对或者有问题的地方也请帮我指正出来,大家互相帮助互相进步!!!

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

Javascript 相关文章推荐
prototype1.4中文手册
Sep 22 Javascript
javascript function调用时的参数检测常用办法
Feb 26 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
Jun 23 Javascript
node.js调用C++开发的模块实例
Jul 03 Javascript
JavaScript导航脚本判断当前导航
Jul 12 Javascript
jquery操作ID带有变量的节点实例
Dec 07 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
Jan 24 Javascript
微信小程序 本地图片按照屏幕尺寸处理
Aug 04 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
Jul 10 jQuery
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 Javascript
解决$store.getters调用不执行的问题
Nov 08 Javascript
微信小程序自定义弹出层效果
May 26 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
Jan 30 #Javascript
微信小程序数据存储与取值详解
Jan 30 #Javascript
Vue精简版风格概述
Jan 30 #Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 #Javascript
vue2.0之多页面的开发的示例
Jan 30 #Javascript
vue-cli实现多页面多路由的示例代码
Jan 30 #Javascript
jQuery与vue实现拖动验证码功能
Jan 30 #jQuery
You might like
提问的智慧(2)
2006/10/09 PHP
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
基于jquery的分页控件(C#)
2011/01/06 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
JS实现div居中示例
2014/04/17 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
Django中使用locals()函数的技巧
2015/07/16 Python
Python实现的快速排序算法详解
2017/08/01 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
招商专员岗位职责
2014/02/08 职场文书
12月红领巾广播稿
2014/02/13 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
青年志愿者活动感想
2015/08/07 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
Python Numpy库的超详细教程
2022/04/06 Python