From e75b09851b26df82905a3b877537932b6db89f37 Mon Sep 17 00:00:00 2001 From: Kael Date: Thu, 17 Jun 2021 00:23:13 +1000 Subject: [PATCH 1/2] feat: expose useLink on the RouterLink constructor --- src/RouterLink.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/RouterLink.ts b/src/RouterLink.ts index dbee6205b..050d8ef85 100644 --- a/src/RouterLink.ts +++ b/src/RouterLink.ts @@ -213,18 +213,21 @@ export const RouterLinkImpl = /*#__PURE__*/ defineComponent({ }, }) +RouterLinkImpl.useLink = useLink + // export the public type for h/tsx inference // also to avoid inline import() in generated d.ts files /** * Component to render a link that triggers a navigation on click. */ -export const RouterLink = RouterLinkImpl as { +export const RouterLink = RouterLinkImpl as unknown as { new (): { $props: AllowedComponentProps & ComponentCustomProps & VNodeProps & RouterLinkProps } + useLink: typeof useLink } function guardEvent(e: MouseEvent) { From fb1e3efdefad6cf9b5f43e8c956a6b6b94dfbf8a Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Fri, 18 Jun 2021 12:08:16 +0200 Subject: [PATCH 2/2] refactor(link): make it smaller in bundle size --- src/RouterLink.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/RouterLink.ts b/src/RouterLink.ts index 050d8ef85..0dbef7140 100644 --- a/src/RouterLink.ts +++ b/src/RouterLink.ts @@ -149,6 +149,8 @@ export const RouterLinkImpl = /*#__PURE__*/ defineComponent({ }, }, + useLink, + setup(props, { slots }) { const link = reactive(useLink(props)) const { options } = inject(routerKey)! @@ -213,8 +215,6 @@ export const RouterLinkImpl = /*#__PURE__*/ defineComponent({ }, }) -RouterLinkImpl.useLink = useLink - // export the public type for h/tsx inference // also to avoid inline import() in generated d.ts files /** @@ -227,6 +227,12 @@ export const RouterLink = RouterLinkImpl as unknown as { VNodeProps & RouterLinkProps } + + /** + * Access to `useLink()` without depending on using vue-router + * + * @internal + */ useLink: typeof useLink }