// useRouter.ts export default function useRouter() { type RouteOptions = string | { path: string; query?: Record }; const normalizeUrl = (to: RouteOptions) => { if (typeof to === 'string') return to; if (typeof to === 'object' && to.path) { let url = to.path; if (to.query && Object.keys(to.query).length) { const queryStr = Object.keys(to.query) .map(key => `${key}=${encodeURIComponent(to.query![key])}`) .join('&'); url += `?${queryStr}`; } // console.log(url, 'urlurlurl'); return url; } throw new Error('[useRouter] Invalid route: ' + JSON.stringify(to)); }; const push = (to: RouteOptions) => { const url = normalizeUrl(to); uni.navigateTo({ url }); }; const replace = (to: RouteOptions) => { const url = normalizeUrl(to); uni.redirectTo({ url }); }; const switchTo = (to: RouteOptions) => { const url = normalizeUrl(to); uni.switchTab({ url }); }; const reLaunch = (to: RouteOptions) => { const url = normalizeUrl(to); uni.reLaunch({ url }); }; const back = (delta: number = 1) => { uni.navigateBack({ delta }); }; return { push, replace, switchTo, reLaunch, back }; }