解决方法如下:刷新页面前存储state根状态,再次创建Vue实例时替换state根状态。代码如下:created(){console.log(sessionStorage.getItem("store"));console.log(sessionStorage.length);//如果store存储在sessionStorage中if(sessionStorage.getItem("store")){//replaceState替换state根state(参数为对象)this.$store.replaceState(Object.assign({},this.$store.state,JSON.parse(sessionStorage.getItem("store"))))}//页面刷新时将vuex中的信息保存到sessionStorage中window.addEventListener("beforeunload",()=>{sessionStorage.setItem("store",JSON.stringify(this.$store.state))})}里面用到的方法:this.$store.replaceState(state:Object)作用:替换store的根状态,即即,替换状态对象参数:一个对象Object.assign(target,...sources)功能:用于将所有可枚举属性的值从一个或多个源对象sources复制到目标对象target。它将返回目标对象目标。例如:consttarget={a:1,b:2};const来源={b:4,c:5};constreturnedTarget=Object.assign(target,source);console.log(target);//输出:对象{a:1,b:4,c:5}console.log(returnedTarget);//输出:对象{a:1,b:4,c:5}Object.assign({},this.$store.state,JSON.parse(sessionStorage.getItem("store")))类似于:consto1={a:1,b:1,c:1};consto2={b:2,c:2};consto3={c:3};constobj=Object.assign({},o1,o2,o3);console.log(obj);//{a:1,b:2,c:3}if如果目标对象中的属性具有相同的键,则该属性将被源对象中的属性覆盖。较晚的源对象的属性将类似地覆盖较早的源对象的属性。从
