/**
* 对传值的地址参数进行处理,将其拼接转换成string 用于传参数处理
* 使用地址传值需要配合remax useQuery() 方法
* 保证name 和 value 都是string / number 类型 传入内嵌的数组或者对象会被转换成 "object","array" 类型字符串的使用时需要注意
* @param param type:Array | Object
* @param1 name 拼接的字段名
* @param2 value 拼接的字段值
* @return {string} 类型为 name1=value1&name2=value2
* 注意:当类型为object时不会处理里面的内嵌对象和数组
* param 类型为Array 时传入的数组的数据类型需要有name和value字段
* name 可以理解为键名 value为键值
* eg:
* const array = [{name: 'id',value:1},{name:'code',value:2}]
* => id=1&code=2
*/
export function toConcatString(param) {
let string = '';
// 传入的数据为数组
if (Array.isArray(param)) {
param.map((item) => {
string = `${string}${item.name}=${item.value}&`;
});
string = string.substr(0, string.length - 1);
return string;
}
// 默认传值为对象
// tempArr 转换为一个临时的数组
const tempArr = [];
for (let key in param) {
// 符合类型的会被进行操作
if (typeof param[key] === 'string' || isNumber(param[key])) {
tempArr.push({
name: key,
value: param[key],
});
}
}
tempArr.map((item) => {
string = `${string}${item.name}=${item.value}&`;
});
string = string.substr(0, string.length - 1);
return string;
}
使用
navigateTo({ url: `/pages/index?${toConcatString(handleData)}`}).catch();