imobile_for_reactnative
Version:
iMobile for ReactNative,是SuperMap iMobile推出的一款基于React-Native框架的移动应用开发工具。基于该开发工具,用户可以使用JavaScript开发语言,开发出在Android和IOS操作系统下运行的原生移动GIS应用,入门门槛低,一次开发,处处运行。
53 lines (51 loc) • 1.6 kB
text/typescript
import { Params } from '../../../types/interface/iserver/types'
/**
* url路径参数,例如:'?name=xx&age=10'
* @param params Params
* @param params hasQuestionMark 返回结果是否以?开头
*/
export function QueryParamToStr(params: Params | Array<String>, hasQuestionMark?: boolean): string {
if (!params) return ''
if (hasQuestionMark === undefined) {
hasQuestionMark = true
}
let QueryParam = hasQuestionMark ? '?' : ''
if (params instanceof Array) {
// return QueryParam + `[${JSON.stringify(params)}]`
return QueryParam + `${JSON.stringify(params)}`
}
let keys = Object.keys(params)
for (let i = 0; i < keys.length; i++) {
const key = keys[i]
// tslint-disable-next-line
let str
if (params[key] instanceof Array || params[key] instanceof Object) {
// str = `[${params[key].toString()}]`
// str = `[${JSON.stringify(params[key])}]`
str = `${JSON.stringify(params[key])}`
} else {
str = params[key]
}
if (str != undefined) {
QueryParam += `${key}=${str}${i < keys.length - 1 ? '&' : ''}`
}
}
return encodeURI(QueryParam)
}
/**
* 替换url中的%@
* @param url 带 %@ 的url
* @param params 按顺序替换url中 %@ 的参数
*/
export function SetUrlParams(url: string, params: Array<string | number | boolean | Array<any>>): string {
if (params?.length < 0) return url
for (let param of params) {
if (param instanceof Array) {
param = `[${param.toString()}]`
} else {
param = param.toString()
}
url = url.replace('%@', param)
}
return encodeURI(url)
}