uniapp 使用jeecg H5端 页面刷新以后 参数丢失 例如:
http://m.ycgzh.com/hskjzhh5/#/pages/achievements/achievementsDetails?id=1317061598714023937&index=0
刷新以后:
http://m.ycgzh.com/hskjzhh5/#/pages/achievements/achievementsDetails
uniapp 使用jeecg H5端 页面刷新以后 参数丢失 例如:
http://m.ycgzh.com/hskjzhh5/#/pages/achievements/achievementsDetails?id=1317061598714023937&index=0
刷新以后:
http://m.ycgzh.com/hskjzhh5/#/pages/achievements/achievementsDetails
梦尋Junjie - 原来她有男朋友
如果你使用了 uni-simple-router 路由
但是传参并没有按照他们的规范传参, 那么 会在刷新页面时丢掉参数, 如果你想不丢到参数那么请使用
{域名}/#/{地址}/? query={参数} 的方式传递
this.$Router.push({path:this.path,query:this.param});
这样的方式传递参数
如果不想这样那么需要修改
uni-simple-router\helpers\urlQuery.js 这个文件
找到 queryGet 函数
并修改
queryGet(query) {
const { encodeURI } = Global.Router.CONFIG; // 获取到路由配置
let [decode, historyObj, strQuery] = [query, query, ''];
switch (encodeURI) {
case true: { // 加密模式
decode = this.decode(query);
strQuery = this.encode(decode);
{ //-> 代码 这是修改的内容 添加我们自定义处理
if (strQuery === '' && query) {
//-> junjie
//-| 需要注意 ,我们的是自定义对象 , 是不包含 query 的,
//-| 按照我们自己的规则解析
let newstrQuery = Object.keys(query).map(key => key.concat("=").concat(query[key])).join("&")
if (newstrQuery) {
strQuery = "?"+newstrQuery;
}
}
}
historyObj = {
query: encodeURIComponent(JSON.stringify(decode)),
};
break;
}
case false: { // 不加密模式
strQuery = this.stringify(query);
break;
}
default: {
err('未知参数模式,请检查 \'encodeURI\'', true);
}
}
return { strQuery, historyObj, decode };
}
铁柱
大哥牛批,感谢
2022-05-20 17:10