获取url上的参数

136 阅读1分钟
export function extractUrlParams (urlString: string): Record<'queryMap' | 'hashMap', Record<string, string>> & {path: string} {
  const url = new URL(urlString)
  const queryMap = Object.fromEntries(url.searchParams.entries())
  const hash = url.hash.slice(1)
  const hashMap = hash.split('&').reduce((acc, param) => {
    const [key, value] = param.split('=')
    if (key) {
      try {
        acc[key] = value ? decodeURIComponent(value) : ''
      } catch (error) {
        acc[key] = value || ''
        console.error(error, `ket => ${key} value => ${value}`)
      }
    }
    return acc
  }, {})

  return { path: url.origin + url.pathname.length === '/' ? '' : url.pathname, queryMap, hashMap }
}