feat(router): 增加路由拦截器的query参数支持并优化路由处理

处理直接进入页面时传递query参数的情况,同时将路由处理逻辑从onLaunch移到onShow中
This commit is contained in:
feige996
2025-08-21 16:18:28 +08:00
parent 2fb1e63059
commit cfd949db3b
2 changed files with 8 additions and 7 deletions

View File

@@ -5,11 +5,14 @@ import { tabbarStore } from './tabbar/store'
import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'
onLaunch((options) => {
console.log('App Launch', options)
})
onShow((options) => {
console.log('App Show', options)
// 处理直接进入页面路由的情况如h5直接输入路由、微信小程序分享后进入等
// https://github.com/unibest-tech/unibest/issues/192
console.log('App Launch', options)
if (options?.path) {
navigateToInterceptor.invoke({ url: `/${options.path}` })
navigateToInterceptor.invoke({ url: `/${options.path}`, query: options.query })
}
else {
navigateToInterceptor.invoke({ url: '/' })
@@ -17,9 +20,6 @@ onLaunch((options) => {
// 处理直接进入路由非首页时tabbarIndex 不正确的问题
tabbarStore.setAutoCurIdx(options.path)
})
onShow((options) => {
console.log('App Show', options)
})
onHide(() => {
console.log('App Hide')
})

View File

@@ -22,8 +22,9 @@ const isDev = import.meta.env.DEV
export const navigateToInterceptor = {
// 注意这里的url是 '/' 开头的,如 '/pages/index/index',跟 'pages.json' 里面的 path 不同
// 增加对相对路径的处理BY 网友 @ideal
invoke({ url }: { url: string }) {
// console.log(url) // /pages/route-interceptor/index?name=feige&age=30
invoke({ url, query }: { url: string, query?: Record<string, string> }) {
console.log(url) // /pages/route-interceptor/index?name=feige&age=30
console.log(query) // /pages/route-interceptor/index?name=feige&age=30
let path = url.split('?')[0]
// 处理相对路径