vue页面刷新数据丢失问题
参考: https://blog.csdn.net/aliven1/article/details/80743470
https://blog.csdn.net/liang377122210/article/details/78880438
https://blog.csdn.net/goodaxuan/article/details/82113123
我的需求: 进入商城后调接口获取用户id,并把id存入session中。之后跳转页面或刷新页面时,直接从session中取出id,无需再调接口。
main.js文件中:
import Vue from 'vue';
import App from './App';
import router from './router';
import Vuex from 'vuex';
···
import store from './store'; //vuex部分 Vue.prototype.$http = axios;
axios.defaults.baseURL = '***';
axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; Vue.prototype.userInfo = function(succallback, failcallback) {
var _this = this;
if (_this.userId) {
succallback && succallback(_this.userInfo);
return;
}
if (sessionStorage.getItem("userMsg")) {
let t = sessionStorage.getItem("userMsg"),
obj = JSON.parse(t),
userMsg = obj.userMsg;
_this.uMID = userMsg.uMID;
_this.userInfo = {
'uMID': userMsg.uMID
};
succallback && succallback(_this.userInfo);
} else {
_this.$http.get('***').then(function(res) {
if (res.status === 200 && res.data.result === "0") {
var data = res.data.message;
_this.userInfo = {
'uMID': data.uMID
};
_this.uMid = data.uMID;
_this.$store.commit('set_userMsg', data);
sessionStorage.setItem("userMsg", JSON.stringify(_this.$store.state));
//在页面加载时读取sessionStorage里的状态信息
if (sessionStorage.getItem("userMsg")) {
_this.$store.replaceState(Object.assign({}, _this.$store.state, JSON.parse(sessionStorage.getItem(
"userMsg"))));
}
//在页面刷新时将vuex里的信息保存到sessionStorage里
window.addEventListener("beforeunload", () => {
sessionStorage.setItem("userMsg", JSON.stringify(_this.$store.state))
})
succallback && succallback(_this.userInfo);
}
})
.catch(function(error) {
console.log(error);
failcallback && failcallback(error);
});
}
}; new Vue({
el: '#app',
router,
store,
data() {
return {
uMID: ''
}
},
components: {
App
},
template: '<App/>'
})
store.js:
import Vue from "vue";
import Vuex from "vuex"; Vue.use(Vuex); export default new Vuex.Store({
state: {
userMsg: '',
userId: ''
},
getters: {
userId: state => state.userId
},
mutations: {
changeUserId(state, userId) {
state.userId = userId;
},
set_userMsg(state, data) {
state.userMsg = data
}
},
actions: {},
modules: {}
});
组件中:
···
data() {
return {
uMID: ''
}
},
created() {
let _this = this;
_this.getUser();
},
methods: {
getUser: function() {
let _this = this;
_this.userInfo(function(userId) {
_this.uMID = userId.uMID;
··· //需要uMID的操作最好在这里进行
});
}
}
···
vue页面刷新数据丢失问题的更多相关文章
- URL不变的情况下,最实用的vue刷新当前页面,provide / inject 组合 方式实现vue页面刷新
原文:https://blog.csdn.net/Dream_xun/article/details/83024487 其他参考:https://blog.csdn.net/liyunkun888/a ...
- vue传参页面刷新数据丢失问题
在做vue的时候,经常会遇到组件之间数据的传递问题,通过params或者query传参,但是,当页面刷新的时候,数据会丢失,找不到数据.今天经过总结,解决了这个问题.通过了一下几种情况进行传值: 通过 ...
- npm安装vuex及防止页面刷新数据丢失
npm install vuex 在项目scr目录下新建store文件夹,在store文件夹下新建index.js文件. import Vue from 'vue'; import Vuex from ...
- vuex页面刷新数据丢失的解决办法
在vue项目中用vuex来做全局的状态管理, 发现当刷新网页后,保存在vuex实例store里的数据会丢失. 原因: 因为store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例 ...
- 结合sessionStorage解决vuex页面刷新数据丢失的问题
将需要保存在vuex中的数据同时保存在sessionStorage中即可: import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); ...
- vue:vue页面刷新vuex数据消失问题
vuex中数据刷新页面消失问题:a页面请求的数据保存在vuex中,只要不刷新,那跳转到b页面里也可以用,但如果b页面刷新,那vuex里的数据就会消失,可以得解决方法:a页面用的数据a页面的生命周期函数 ...
- VUE页面刷新问题
1). location方式 location.reload() 缺点:刷新页面,卡白 2). router方式 this.$router.go(0) 缺点:同一问题,比一好点 3). provide ...
- 解决vue页面刷新或者后退参数丢失的问题
原文链接: 点我 在商城类的项目中,会经常遇到列表数据筛选查询的情景,当要打开某一项的详情页或者暂时离开列表页,再返回(后退时),选择的筛选条件会全部丢失,辛辛苦苦选择好的条件全没了,还得重新选择,如 ...
- vue页面刷新重定向
在App.vue中,添加如下代码: created(){ if(this.$router.path !== '/RealTimeMonitoring'){ this.$router.replace(' ...
随机推荐
- C 终端输入 字符123 输出 10进制123
#include <stdio.h> #define N 20 int main(int argc, const char *argv[]) { char a[N] = {'\0'}; i ...
- microk8s 1.14本地Registry及DNS配置
microk8s 从1.14 开始, 使用containerd 代替原来自带的microk8s.docker, 据说是出于性能和与主机docker共存的考虑. 使用本地Registry加速镜像 mic ...
- 下载和安装mongodb4.2.0+robmongo可视化工具
一.mongodb下载安装 1.mongodb下载地址:https://www.mongodb.com/download-center/community?jmp=nav 下了很久很久,可以找其他途径 ...
- java String,StringBuilder和StringBuffer类的区别
对String而言: String是只读字符串,所引用的字符串不能被改变,一经定义,无法再增删改. String 定义的字符串保存在常量池里面,进行+操作时不能直接在原有基础上拼接. 每次+操作 : ...
- CF459E Pashmak and Graph (Dag dp)
传送门 解题思路 \(dag\)上\(dp\),首先要按照边权排序,然后图都不用建直接\(dp\)就行了.注意边权相等的要一起处理,具体来讲就是要开一个辅助数组\(g[i]\),来避免同层转移. 代码 ...
- PAT甲级——A1109 Group Photo【25】
Formation is very important when taking a group photo. Given the rules of forming K rows with Npeopl ...
- Mysql优化系列之查询性能优化前篇1
前言 这是优化系列的最后一篇的第1小篇,我们其实可以直接从sql怎么写讲起,why not?但是我还是决定花2个篇幅 问一些问题,带着几个问题循序渐进的往下走. 一个sql语句是怎么被执行的? sql ...
- Git 查看、删除、重命名远程分支
原文地址:http://blog.csdn.net/sunnyyoona/article/details/52065544 1. 查看远程分支 分支加上-a参数可以查看远程分支,远程分支会用红色表示出 ...
- 面试系列12 redis和memcached有什么区别
(1)redis和memcached有啥区别 这个事儿吧,你可以比较出N多个区别来,但是我还是采取redis作者给出的几个比较吧 1)Redis支持服务器端的数据操作:Redis相比Memcached ...
- 2018-8-10-win10-uwp-如何判断一个对象被移除
title author date CreateTime categories win10 uwp 如何判断一个对象被移除 lindexi 2018-08-10 19:16:50 +0800 2018 ...