show.tsx 986 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import * as 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 State {
  10. pokemon: IPokemon;
  11. }
  12. interface Props extends RouteComponentProps<any> {}
  13. class PokemonShow extends React.Component<Props, State> {
  14. state = {
  15. pokemon: {
  16. id: null,
  17. nickname: null,
  18. },
  19. };
  20. async componentDidMount() {
  21. try {
  22. const data = await Pokemon.get(this.props.match.params.id);
  23. this.setState({pokemon: data.data});
  24. } catch (err) {
  25. // eslint-disable-next-line no-console
  26. console.log(JSON.stringify(err, null, 2));
  27. }
  28. }
  29. render(): JSX.Element {
  30. return (
  31. <>
  32. {this.state.pokemon.id}: {this.state.pokemon.nickname}
  33. <p>
  34. <Link to={`${this.props.match.url}/404`}>404 page</Link>
  35. </p>
  36. </>
  37. );
  38. }
  39. }
  40. export default PokemonShow;