// 跳转目标解析:'pages/X?id=1' -> { url: 'pages/X', params: { id: '1' } } // router.pushUrl 的 url 不能带 query,参数必须走 params 字段 export interface RouteTarget { url: string; params: Record; } export function parseRouteTarget(target: string): RouteTarget { const q = target.indexOf('?'); if (q < 0) { const empty: Record = {}; const plain: RouteTarget = { url: target, params: empty }; return plain; } const url = target.substring(0, q); const params: Record = {}; const pairs = target.substring(q + 1).split('&'); for (const p of pairs) { const kv = p.split('='); if (kv.length === 2 && kv[0].length > 0) { params[kv[0]] = decodeURIComponent(kv[1]); } } const result: RouteTarget = { url: url, params: params }; return result; }