chore(router): 修复switchTab无法携带query参数的问题

修复uni-app中switchTab跳转时query参数丢失的问题,改为直接使用完整path跳转
优化路由拦截器中的query参数合并逻辑,确保参数正确传递
This commit is contained in:
feige996
2025-08-21 20:10:47 +08:00
parent d6a653b1f1
commit 8e76de0313
2 changed files with 19 additions and 19 deletions

View File

@@ -18,38 +18,32 @@ export const navigateToInterceptor = {
if (url === undefined) {
return
}
let { path, query: _query } = parseRouteStr(url)
let path = decodeURIComponent(url).split('?')[0]
console.log('路由拦截器 1: url->', url, ', query ->', query)
const myQuery = { ..._query, ...query }
// /pages/route-interceptor/index?name=feige&age=30
console.log('路由拦截器url->', url, ', query ->', query, ', path ->', path)
console.log('路由拦截器 2: path->', path, ', _query ->', _query)
console.log('路由拦截器 3: myQuery ->', myQuery)
// 处理相对路径
if (!path.startsWith('/')) {
console.log(getCurrentPages())
if (getCurrentPages().length === 0) {
return
}
const currentPath = getLastPage()?.route || ''
const normalizedCurrentPath = currentPath.startsWith('/') ? currentPath : `/${currentPath}`
const baseDir = normalizedCurrentPath.substring(0, normalizedCurrentPath.lastIndexOf('/'))
path = `${baseDir}/${path}`
}
const { path: _path, query: _query } = parseRouteStr(path)
console.log('_path:', _path, 'query:', _query)
// 处理直接进入路由非首页时tabbarIndex 不正确的问题
tabbarStore.setAutoCurIdx(_path)
tabbarStore.setAutoCurIdx(path)
if (LOGIN_PAGE_LIST.includes(_path)) {
if (LOGIN_PAGE_LIST.includes(path)) {
console.log('命中了 LOGIN_PAGE_LIST')
return
}
console.log('拦截器中得到的 path:', path)
console.log('拦截器中得到的 query:', query)
if (query) {
path += `?${Object.keys(query).map(key => `${key}=${query[key]}`).join('&')}`
if (myQuery) {
path += `?${Object.keys(myQuery).map(key => `${key}=${myQuery[key]}`).join('&')}`
}
const redirectUrl = `${LOGIN_PAGE}?redirect=${encodeURIComponent(path)}`
@@ -62,7 +56,7 @@ export const navigateToInterceptor = {
return
}
else {
if (EXCLUDE_PAGE_LIST.includes(_path)) {
if (EXCLUDE_PAGE_LIST.includes(path)) {
return
}
else {