diff --git a/demos/intermediate/src/containers/NotFound/index.tsx b/demos/intermediate/src/containers/NotFound/index.tsx index b3c0454..783df55 100644 --- a/demos/intermediate/src/containers/NotFound/index.tsx +++ b/demos/intermediate/src/containers/NotFound/index.tsx @@ -8,7 +8,7 @@ const NotFound: ErrorPageComponentType = ({ error }) => ( Not found

Uh-oh!

We couldn't catch that Pokémon.

- {error && {error}} + {error instanceof Error && {error.message}} View 'em all diff --git a/docs/page-components.md b/docs/page-components.md index 37c7248..21b4739 100644 --- a/docs/page-components.md +++ b/docs/page-components.md @@ -59,7 +59,7 @@ import { const NotFound: ErrorPageComponentType = ({ error }) => (

Not found.

- {error &&

{error}

} + {error instanceof Error &&

{error.message}

}
); diff --git a/package/src/Guard.tsx b/package/src/Guard.tsx index b7cec29..27dc352 100644 --- a/package/src/Guard.tsx +++ b/package/src/Guard.tsx @@ -13,7 +13,6 @@ import { NextAction, NextPropsPayload, NextRedirectPayload, - RouteError, } from './types'; type PageProps = NextPropsPayload; @@ -40,7 +39,7 @@ const Guard: React.FunctionComponent = ({ children, component, meta, const hasGuards = useMemo(() => !!(guards && guards.length > 0), [guards]); const [validationsRequested, setValidationsRequested] = useStateRef(0); const [routeValidated, setRouteValidated] = useStateRef(!hasGuards); - const [routeError, setRouteError] = useStateWhenMounted(null); + const [routeError, setRouteError] = useStateWhenMounted(undefined); const [routeRedirect, setRouteRedirect] = useStateWhenMounted(null); const [pageProps, setPageProps] = useStateWhenMounted({}); @@ -126,7 +125,7 @@ const Guard: React.FunctionComponent = ({ children, component, meta, const currentRequests = validationsRequested.current; let pageProps: PageProps = {}; - let routeError: RouteError = null; + let routeError: unknown = undefined; let routeRedirect: RouteRedirect = null; try { @@ -134,7 +133,7 @@ const Guard: React.FunctionComponent = ({ children, component, meta, pageProps = props; routeRedirect = redirect; } catch (error) { - routeError = error.message || 'Not found.'; + routeError = error; } if (currentRequests === getValidationsRequested()) { @@ -152,7 +151,7 @@ const Guard: React.FunctionComponent = ({ children, component, meta, useEffect(() => { if (hasPathChanged) { setValidationsRequested(requests => requests + 1); - setRouteError(null); + setRouteError(undefined); setRouteRedirect(null); setRouteValidated(!hasGuards); if (hasGuards) { diff --git a/package/src/index.ts b/package/src/index.ts index 4822bc7..862d2f2 100644 --- a/package/src/index.ts +++ b/package/src/index.ts @@ -6,7 +6,6 @@ export { GuardFunction, GuardProviderProps, Next, - RouteError, PageComponent, LoadingPageComponentType, ErrorPageComponentType, diff --git a/package/src/types.ts b/package/src/types.ts index 599220d..87eb8d8 100644 --- a/package/src/types.ts +++ b/package/src/types.ts @@ -57,8 +57,6 @@ export type GuardFunction = ( next: Next, ) => void; -export type RouteError = string | null; - /** * Page Component Types */ @@ -72,10 +70,10 @@ export type PageComponent

= | number; export type LoadingPageComponent = PageComponent; -export type ErrorPageComponent = PageComponent<{ error: RouteError }>; +export type ErrorPageComponent = PageComponent<{ error: unknown }>; export type LoadingPageComponentType = PageComponentType; -export type ErrorPageComponentType = PageComponentType<{ error: RouteError }>; +export type ErrorPageComponentType = PageComponentType<{ error: unknown }>; /** * Props