pokemon.tsx 846 B

1234567891011121314151617181920212223242526272829
  1. import React, {lazy, Suspense} from 'react';
  2. import PropTypes from 'prop-types';
  3. import {Route, Switch, RouteComponentProps} from 'react-router-dom';
  4. const PokemonShow = lazy((): Promise<any> => import('./pokemon/show'));
  5. const PokemonIndex = lazy((): Promise<any> => import('./pokemon/index'));
  6. import NotFound from './not_found';
  7. function Pokemon({match}: RouteComponentProps<void>): React.FunctionComponentElement<void> {
  8. return (
  9. <>
  10. <Suspense fallback={<div>Loading...</div>}>
  11. <Switch>
  12. <Route component={PokemonShow} exact path={`${match.path}/:id`} />
  13. <Route component={PokemonIndex} exact path={`${match.path}`} />
  14. <Route component={NotFound} />
  15. </Switch>
  16. </Suspense>
  17. </>
  18. );
  19. }
  20. Pokemon.propTypes = {
  21. match: PropTypes.object.isRequired,
  22. };
  23. export default Pokemon;