Skip to content

Instantly share code, notes, and snippets.

@glippi
Created October 22, 2019 13:56
Show Gist options
  • Save glippi/9ee88bf59ba22c59bdf78db3fd5afc9c to your computer and use it in GitHub Desktop.
Save glippi/9ee88bf59ba22c59bdf78db3fd5afc9c to your computer and use it in GitHub Desktop.
Example of lazy loading entry point of React App following Kent Dodds example
import React, { Suspense, lazy, useEffect } from 'react';
import { LoadingSpinner } from './LoadingSpinner';
import { useUser } from '../context/UserContext';
const loadAuthenticatedApp = () => import('./AuthenticatedApp');
const AuthenticatedApp = lazy(loadAuthenticatedApp);
const UnauthenticatedApp = lazy(() => import('./UnauthenticatedApp'));
function App() {
const { user, logout } = useUser();
// pre-load the authenticated side in the background while the user's
// filling out the login form.
useEffect(() => {
loadAuthenticatedApp();
}, []);
return (
<Suspense fallback={<LoadingSpinner />}>
{user ? <AuthenticatedApp logout={logout} /> : <UnauthenticatedApp />}
</Suspense>
);
}
export default App;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment