3 回答

在mutation的state的自定义set change方法的时候 根据使用场景的不同
储存到Session Storage和Local Storage或者其他本地储存中
把对应state的初始化改成从本地储存中获取
另外本地储存 如果是存储JSON字符串 一定要做好相应的容错处理

一般在登录成功的时候需要把用户信息,菜单信息放置vuex中,作为全局的共享数据。但是在页面刷新的时候vuex里的数据会重新初始化,导致数据丢失。因为vuex里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,vuex里面的数据就会被重新赋值
办法一:将vuex中的数据直接保存到浏览器缓存中(sessionStorage、localStorage、cookie)
办法二:在页面刷新的时候再次请求远程数据,使之动态更新vuex数据
办法三:在父页面向后台请求远程数据,并且在页面刷新前将vuex的数据先保存至sessionStorage(以防请求数据量过大页面加载时拿不到返回的数据)

路由本身有query参数,但是我点击更新了query,也push了,页面url不改变,这个时候其实用到了对象的拷贝,你需要对query对象做拷贝,对象的拷贝方法
代码如下,我才用的对象变字符串再变对象拷贝方法
let query = this.$router.history.current.query;
let path = this.$router.history.current.path;
//对象的拷贝
let newQuery = JSON.parse(JSON.stringify(query));
newQuery.pid = pid;
this.$router.push({ path, query: newQuery });
相关问题推荐
添加回答
举报