参考: 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页面刷新数据丢失问题的更多相关文章

  1. URL不变的情况下,最实用的vue刷新当前页面,provide / inject 组合 方式实现vue页面刷新

    原文:https://blog.csdn.net/Dream_xun/article/details/83024487 其他参考:https://blog.csdn.net/liyunkun888/a ...

  2. vue传参页面刷新数据丢失问题

    在做vue的时候,经常会遇到组件之间数据的传递问题,通过params或者query传参,但是,当页面刷新的时候,数据会丢失,找不到数据.今天经过总结,解决了这个问题.通过了一下几种情况进行传值: 通过 ...

  3. npm安装vuex及防止页面刷新数据丢失

    npm install vuex 在项目scr目录下新建store文件夹,在store文件夹下新建index.js文件. import Vue from 'vue'; import Vuex from ...

  4. vuex页面刷新数据丢失的解决办法

    在vue项目中用vuex来做全局的状态管理, 发现当刷新网页后,保存在vuex实例store里的数据会丢失. 原因: 因为store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例 ...

  5. 结合sessionStorage解决vuex页面刷新数据丢失的问题

    将需要保存在vuex中的数据同时保存在sessionStorage中即可: import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); ...

  6. vue:vue页面刷新vuex数据消失问题

    vuex中数据刷新页面消失问题:a页面请求的数据保存在vuex中,只要不刷新,那跳转到b页面里也可以用,但如果b页面刷新,那vuex里的数据就会消失,可以得解决方法:a页面用的数据a页面的生命周期函数 ...

  7. VUE页面刷新问题

    1). location方式 location.reload() 缺点:刷新页面,卡白 2). router方式 this.$router.go(0) 缺点:同一问题,比一好点 3). provide ...

  8. 解决vue页面刷新或者后退参数丢失的问题

    原文链接: 点我 在商城类的项目中,会经常遇到列表数据筛选查询的情景,当要打开某一项的详情页或者暂时离开列表页,再返回(后退时),选择的筛选条件会全部丢失,辛辛苦苦选择好的条件全没了,还得重新选择,如 ...

  9. vue页面刷新重定向

    在App.vue中,添加如下代码: created(){ if(this.$router.path !== '/RealTimeMonitoring'){ this.$router.replace(' ...

随机推荐

  1. ARM GNU 常用汇编伪指令介绍

    abort .abort: 停止汇编 .align abs­expr1, abs­expr2: 以某种对齐方式,在未使用的存储区域填充值. 第一个值表示对齐方式,4, 8,16 或 32. 第 二个表 ...

  2. shell 命令 链接文件 ln

    1. 创建软链接文件   [  ln -s 源文件   链接文件]     类似于windows下的快捷方式 [ ln -s expr.sh expr ] 此时创建的链接文件路径是相对于现在所在的路径 ...

  3. Window sevice +OWIN+webapi

    webapi正常都托管在iis上,这里引入owin,将其托管在window服务上. 第一步:创建一个服务,这里就不多描述. 第二步:引入OWIN 2.1引入bll 2.2加入api路由配置 publi ...

  4. Extremely fast hash algorithm-xxHash

    xxHash - Extremely fast hash algorithm xxHash is an Extremely fast Hash algorithm, running at RAM sp ...

  5. [转]nginx简易教程

    安装 nginx官网下载地址 发布版本分为 Linux 和 windows 版本. 也可以下载源码,编译后运行. 从源代码编译 Nginx 把源码解压缩之后,在终端里运行如下命令: $ ./confi ...

  6. 【转载】99%的人都理解错了HTTP中GET与POST的区别

    作者:Larry链接:https://zhuanlan.zhihu.com/p/22536382来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 原文链接 作者:WebT ...

  7. js面试总结3

    异步和单线程 题目: 1.同步和异步的区别? 2.一个关于setTimeout的笔试题. 3.前段使用异步的场景有哪些? 什么是异步? console.log(100) setTimeout(func ...

  8. spark启动后出现“JAVA_HOME not set” 异常和"org.apache.hadoop.security.AccessControlException"异常

    /home/bigdata/hadoop/spark-2.1.1-bin-hadoop2.7/sbin/start-all.sh 启动后执行jps命令,主节点上有Master进程,其他子节点上有Wor ...

  9. [CTSC2018]青蕈领主

    [CTSC2018]青蕈领主 题解 首先,连续段要知道结论: 连续段要么不交,要么包含 所以是一棵树!每个位置的father是后面第一个包含它的 树形DP! 设dp[x],x为根的子树,(设管辖的区间 ...

  10. (15)python打包

    .py文件在没有安装python软件的电脑上是不能被执行的