app.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import React, {lazy, Suspense} from 'react';
  2. import {BrowserRouter, Route, Link, Switch} from 'react-router-dom';
  3. import {hot} from 'react-hot-loader/root';
  4. import ApplicationLayout from './components/layout/application_layout';
  5. const Pokemon = lazy((): Promise<any> => import('./components/pages/pokemon'));
  6. const NotFound = lazy((): Promise<any> => import('./components/pages/not_found'));
  7. const TestComponent = lazy((): Promise<any> => import('./components/test_component'));
  8. const RelayTest = lazy((): Promise<any> => import('./components/relay_test'));
  9. import './assets/stylesheets/app.scss';
  10. function App(): React.ReactElement {
  11. return (
  12. <BrowserRouter>
  13. <ApplicationLayout>
  14. <Suspense fallback={<div>Loading...</div>}>
  15. <Switch>
  16. <Route component={TestComponent} exact path='/' />
  17. <Route component={RelayTest} exact path='/relay' />
  18. <Route component={Pokemon} path='/pokemon' />
  19. <Route component={NotFound} />
  20. </Switch>
  21. <p>
  22. <Link to='/pokemon'>Show me the pokemon!</Link>
  23. </p>
  24. <p>
  25. <Link to='/relay'>Take me to relay</Link>
  26. </p>
  27. </Suspense>
  28. </ApplicationLayout>
  29. </BrowserRouter>
  30. );
  31. }
  32. export default hot(App);