Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import { FunctionComponent, LazyExoticComponent, Suspense } from "react";
import { Route, RouteProps } from "react-router-dom";
import { PageLoader } from "../PageLoader";
export interface LazyRouteProps extends RouteProps {
component: LazyExoticComponent<FunctionComponent>;
}
/**
* A wrapper around the react-router-dom <Route /> which takes in a lazy loaded component
* and wraps it with <Suspense /> and a generic <PageLoader /> fallback
*
* Usage:
* ```tsx
* import { lazy } from "react";
*
* const MyComponent = lazy(() => import("./path/to/MyComponent"));
*
* <LazyRoute path="/" component={MyComponent} />
*
* ```
*/
export const LazyRoute: FunctionComponent<LazyRouteProps> = ({
component: Component,
...routeProps
}) => (
<Route {...routeProps}>
<Suspense fallback={<PageLoader />}>
<Component />
</Suspense>
</Route>
);
|