show.tsx 925 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import React from 'react';
  2. import {RouteComponentProps} from 'react-router';
  3. import {Link} from 'react-router-dom';
  4. import {Pokemon} from '../../../api';
  5. export interface IPokemon {
  6. id: number;
  7. nickname: string;
  8. }
  9. interface Props extends RouteComponentProps<any> {
  10. Pokemon: IPokemon;
  11. }
  12. interface State {
  13. pokemon: IPokemon;
  14. }
  15. class PokemonShow extends React.Component<Props, State> {
  16. async componentDidMount() {
  17. try {
  18. const data = await Pokemon.get(this.props.match.params.id);
  19. this.setState({pokemon: data.data});
  20. } catch (err) {
  21. // eslint-disable-next-line no-console
  22. console.log(JSON.stringify(err, null, 2));
  23. }
  24. }
  25. render(): JSX.Element {
  26. return (
  27. <>
  28. {this.state.pokemon.id}: {this.state.pokemon.nickname}
  29. <p>
  30. <Link to={`${this.props.match.url}/404`}>404 page</Link>
  31. </p>
  32. </>
  33. );
  34. }
  35. }
  36. export default PokemonShow;