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(' ...
随机推荐
- Elasticsearch.net一些开发笔记
.net下开发es半年多了,留下些笔记 //https://www.elastic.co/guide/cn/elasticsearch/guide/current/combining-filters. ...
- PHP算法之删除最外层的括号
有效括号字符串为空 ("")."(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接.例如 ...
- 使用FastJson转化Json格式
1.下载Jar包 http://repo1.maven.org/maven2/com/alibaba/fastjson/ 2.将jar包导入工程 3.示例 package nc.testFastJso ...
- openwrt_ipsec_function.sh 分析
#!/bin/sh # # Copyright (C) Vitaly Protsko <villy@sft.ru> errno= # get_fieldval gate src " ...
- Gamma(1)
目前为止看到的解释Gamma来由说得最清楚的一篇文章:https://www.cambridgeincolour.com/tutorials/gamma-correction.htm 几点总结. 1, ...
- 10月23日——作业1——while循环练习
while循环'''此类编程题,注意带进去试一试1.九九乘法表row=1while row<=9: col=1 while col<=row: print(col,"*" ...
- Windows copy
将一份或多份文件复制到另一个位置. COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B] [+ source ...
- 「题解」:$d$
问题 A: $d$ 时间限制: 1 Sec 内存限制: 512 MB 题面 题面谢绝公开. 题解 赛时切掉了然而过程十分曲折. 贪心思路很好想.然而一开始错误以为是单峰.其实几个峰都有可能. 开场写 ...
- js--判断当前环境是否为iphonex环境
/** * 判断是否是iphonex */ function getIsIphonex () { var u = navigator.userAgent; var isIOS = !!u.match( ...
- C# GZipStream 压缩 解压
关于GZipStream压缩解压,网上找了很多资料,完整的不多,要么是针对字符串压缩解压缩的,要么只实现了针对单个文件的压缩解压缩,还有的不支持子文件夹的压缩,实用性都不是很大. 以下整理了压缩解压缩 ...