app.jsx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  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(() => import('./components/pages/pokemon'));
  6. const NotFound = lazy(() => import('./components/pages/not_found'));
  7. const TestComponent = lazy(() => import('./components/test_component'));
  8. import './assets/stylesheets/app.scss';
  9. class App extends React.Component {
  10. render() {
  11. return (
  12. <BrowserRouter>
  13. <Suspense fallback={<div>Loading...</div>}>
  14. <ApplicationLayout>
  15. <Switch>
  16. <Route exact path='/' component={TestComponent} />
  17. <Route path='/pokemon' component={Pokemon} />
  18. <Route component={NotFound} />
  19. </Switch>
  20. <p>
  21. <Link to='/pokemon'>Show me the pokemon!</Link>
  22. </p>
  23. </ApplicationLayout>
  24. </Suspense>
  25. </BrowserRouter>
  26. );
  27. }
  28. }
  29. export default hot(App);