小前端jf
小前端jf
  • 发布:2020-12-24 14:56
  • 更新:2021-11-13 11:13
  • 阅读:2670

uniapp 使用jeecg H5端 页面刷新以后 参数丢失

分类:uni-app

uniapp 使用jeecg H5端 页面刷新以后 参数丢失 例如:
http://m.ycgzh.com/hskjzhh5/#/pages/achievements/achievementsDetails?id=1317061598714023937&index=0

刷新以后:  

http://m.ycgzh.com/hskjzhh5/#/pages/achievements/achievementsDetails

2020-12-24 14:56 负责人:无 分享
已邀请:
梦尋Junjie

梦尋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

该问题目前已经被锁定, 无法添加新回复