欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

uniapp 电商app 实现路由与页面跳转url拼接函数封装

程序员文章站 2024-02-02 11:30:04
...

路由与页面跳转传递数据函数封装

无论是app 还是 页面 或者小程序,在页面跳转时,很多时候都需要传递数据,方便二级页面进行使用。
uniapp官网中关于路由与页面跳转链接
uniapp 电商app 实现路由与页面跳转url拼接函数封装
官网提供的示例:

适用于简单的数据传递

//在起始页面跳转到test.vue页面并传递参数
uni.navigateTo({
    url: 'test?id=1&name=uniapp'
});
// 在test.vue页面接受参数
export default {
    onLoad: function (option) { //option为object类型,会序列化上个页面传递的参数
        console.log(option.id); //打印出上个页面传递的参数。
        console.log(option.name); //打印出上个页面传递的参数。
    }
}

适用于对象数据传递

<navigator :url="'/pages/test/test?item='+ encodeURIComponent(JSON.stringify(item))"></navigator>
// 在test.vue页面接受参数
onLoad: function (option) {
    const item = JSON.parse(decodeURIComponent(option.item));
}

如果是对象属性很多的情况下,传递数据会很繁琐,而且二级页面中的url拼接会很长,特别是二级页面需要的数据是传递对象中的部分参数时,这个时候,封装一个对象传递的函数尤为重要。
思路:可以传递对象,且表明需要传递的是哪些属性,函数自动执行对象中属性的挑选进而传递。方法实现如下:

export function joinUrlParams(url,params,usedKey = []){
	if(url.indexOf("?") != -1){
		return url
	}
	if(params === null || typeof(params) === "undefined" || typeof(params) !== "object"){
		return url
	}
	let param = ""
	for(var key in params){
		if(params[key] !== "" && typeof(params[key]) !== "undefined" && params[key] !== null){
			if(usedKey.length>0){
				for (var i = 0; i < usedKey.length; i++) {
					if(key == usedKey[i]){
						if(param != ""){
							param += "&"
						}
						param += key + "=" + params[key]
						break;
					}
				}
			}else{
				if(param != ""){
					param += "&"
				}
				param += key + "=" + params[key]
			}
		}
	}
	if(param != ""){
		return url + "?" + param
	}
	return url
}

调用方法

uni.navigateTo({
	url:joinUrlParams("/pages/goods/goods",data,["pictUrl","bannerList","zkFinalPrice"])
});

上一篇: Linux下的小程序--进度条

下一篇: