From 7bf95d4bcf478eb99099b84d0b1f428bde71a98c Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Sat, 26 Sep 2020 11:23:13 +0800 Subject: [PATCH] chore: remove useless navigation duplicated --- src/composition/use-route.ts | 46 ++++++++++-------------------------- 1 file changed, 12 insertions(+), 34 deletions(-) diff --git a/src/composition/use-route.ts b/src/composition/use-route.ts index c7776ba64..b6cbc8e17 100644 --- a/src/composition/use-route.ts +++ b/src/composition/use-route.ts @@ -1,44 +1,28 @@ /** * Vue Router support */ -import { getCurrentInstance, ComponentPublicInstance } from 'vue'; +import { + PropType, + ExtractPropTypes, + getCurrentInstance, + ComponentPublicInstance, +} from 'vue'; import type { RouteLocation } from 'vue-router'; -export type RouteProps = { - url?: string; - replace?: boolean; - to?: RouteLocation; +export const routeProps = { + to: [String, Object] as PropType, + url: String, + replace: Boolean, }; -export type RouteConfig = { - url?: string; - to?: RouteLocation; - replace?: boolean; -}; - -function isRedundantNavigation(err: Error) { - return ( - err.name === 'NavigationDuplicated' || - // compatible with vue-router@3.3 - (err.message && err.message.indexOf('redundant navigation') !== -1) - ); -} +export type RouteProps = ExtractPropTypes; export function route(vm: ComponentPublicInstance) { const router = vm.$router; const { to, url, replace } = vm; if (to && router) { - const promise = router[replace ? 'replace' : 'push'](to); - - /* istanbul ignore else */ - if (promise && promise.catch) { - promise.catch((err) => { - if (err && !isRedundantNavigation(err)) { - throw err; - } - }); - } + router[replace ? 'replace' : 'push'](to); } else if (url) { replace ? location.replace(url) : (location.href = url); } @@ -50,9 +34,3 @@ export function useRoute() { route(vm); }; } - -export const routeProps = { - url: String, - replace: Boolean, - to: [String, Object], -};