From 0a4ba4e362e730d9c3cde37d71d959fcc0aa55dd Mon Sep 17 00:00:00 2001 From: Anton Nemtsev Date: Tue, 11 Feb 2020 11:28:09 +0100 Subject: [PATCH] turning off prefetch for pages that not in the routes list --- __tests__/index.spec.js | 5 +++++ src/index.js | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/__tests__/index.spec.js b/__tests__/index.spec.js index 5719863..43b6079 100644 --- a/__tests__/index.spec.js +++ b/__tests__/index.spec.js @@ -50,6 +50,11 @@ describe('UrlPrettifier getPrettyUrl', (): void => { expect(router.getPrettyUrl('unknownPage', {id: 1})) .toEqual({href: '/unknownPage?id=1'}); }); + + it('should return href and prefetch equal to false if the route does not exist', (): void => { + expect(router.getPrettyUrl('unknownPage', {id: 1, preventPrefetchIfNoRoute: true})) + .toEqual({href: '/unknownPage?id=1', prefetch: false}); + }); }); describe('UrlPrettifier getPrettyUrlPatterns (DEPRECATED)', (): void => { diff --git a/src/index.js b/src/index.js index cb3b681..cdcc963 100644 --- a/src/index.js +++ b/src/index.js @@ -36,11 +36,12 @@ export default class UrlPrettifier { ; } - getPrettyUrl(pageName: T, params: ParamType): RouteLinkParamsType { + getPrettyUrl(pageName: T, {preventPrefetchIfNoRoute = false, ...params}: {preventPrefetchIfNoRoute: boolean, params: ParamType}): RouteLinkParamsType { const route: ?RouteType = this.routes.filter((currentRoute: RouteType): boolean => currentRoute.page === pageName)[0]; return { href: `/${pageName}${this.paramsToQueryString(params)}`, + ...(preventPrefetchIfNoRoute && !route && {prefetch: false}), ...(route && route.prettyUrl ? {as: typeof route.prettyUrl === 'string' ? route.prettyUrl : route.prettyUrl(params)} : {}