vue跳转传参-隐藏参数-参数刷新页面问题
vue跳转时页面传参没法隐藏或隐藏后刷新页面消失问题问题描述解决办法页面刷新参数消失问题解决问题描述路由时用的用的router,官网给的传参方式query,params。可是问题是query传参会在url显示传的参数,params传参可以隐藏但是一刷新页面params里的参数就没了很蛋疼解决办法用vuex保存变量来解决,但是问题来了如果好多页面都是这种那不是要定义好多变量。让后想到...
·
vue跳转传参-隐藏参数-参数刷新页面问题
问题描述
路由时用的用的router,官网给的传参方式query,params。
可是问题是
query传参会在url显示传的参数,
params传参可以隐藏但是一刷新页面params里的参数就没了很蛋疼
解决办法
用vuex保存变量来解决,但是问题来了如果好多页面都是这种那不是要定义好多变量。
让后想到动态添加对象属性和值不就可以解决么,下面解决代码
vuex中定义变量存储
export default new Vuex.Store({
state: {
parameters:{}//保存页面传参
},
getters: {
parameters : state => {//获取方法
return state.parameters;
}
},
mutations: {
setParameters : (state,parametersData) => {//页面参数传递格式{key:'key',value:'value'}
if(parametersData){
//试了好久state.parameters[key]=value这样会报错只能先取出来添加属性再赋值
let parameters=state.parameters;
parameters[parametersData.key]=parametersData.value;
state.parameters=parameters;
}
}
},
actions: {
},
modules: {
}
})
跳转页保存变量
editClick(id){
this.$store.commit("setParameters",{key:'myKey',value:id});
this.$router.push("edit")
},
跳转目标页面获取变量
getMyId() {
let parameters=this.$store.getters.parameters;
if(parameters['myKey']){
//该干嘛干嘛
}
},
这样一来所有跳转传参都可以调用这两个方法 key,value动态添加就可以
页面刷新参数消失问题解决
然后最后再vuex中统一做页面刷新
在App.vue中统一做页面刷新保存到sessionStorage中
App.vue 页面created代码
created () { //页面刷新store数据备份
if (sessionStorage.getItem("store") ) { //在页面加载时读取sessionStorage里的状态信息
this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("store"))))
}
window.addEventListener("beforeunload",()=>{ //在页面刷新时将vuex里的信息保存到sessionStorage里
sessionStorage.setItem("store",JSON.stringify(this.$store.state))
})
}
这样其他页面就可以直接
//添加或修改参数
this.$store.commit("setParameters",{key:'myKey',value:1});
this.$store.getters.parameters['myKey']
哎。。params自己能解决页面刷新就不用这么麻烦了
最近才研究vue好多坑哦 哎谁说简单的来着,有没有想过我们这种菜鸡的感受!!!
更多推荐
已为社区贡献1条内容
所有评论(0)