[TIL] 220128

Lee Syong·2022년 1ė›” 28ėž
0

TIL

ëŠĐ록 ëģīęļ°
163/204
post-thumbnail

📝 ė˜Ī늘 한 ęēƒ

  1. PRACTICE

📚 ë°°ėšī ęēƒ

linkedList는 gitlab ėŧĪ밋

1. PRACTICE

3) movie app

(1) useEffect() / API í˜ļėķœ

ë°Đëē• 1: promise / then ė‚ŽėšĐ

useEffect(function () {
  fetch(
    "https://yts.mx/api/v2/list_movies.json?minimum_rating=9&sort_by=year"
  )
    .then((response) => response.json())
    .then((info) => {
    setMovies(info.data.movies);
    setLoading(false);
  });
}, []);

ë°Đëē• 2: async / await ė‚ŽėšĐ

const getMovies = async () => {
  const json = await (
    await fetch(
      "https://yts.mx/api/v2/list_movies.json?minimum_rating=9&sort_by=year"
    )
  ).json();
  setMovies(json.data.movies);
  setLoading(false);
};

useEffect(() => getMovies(), []);

(2) ėŧī폮넌íŠļ 렌더링

ėīëĨž 바탕ėœžëĄœ 렌더링할 App ėŧī폮넌íŠļëĨž ėž‘ė„ąí–ˆë‹Ī.

return (
  <div>
    <h1>Movies {loading ? null : `(${movies.length})`}</h1>
    {loading ? (
      <strong>로ë”Đ ėĪ‘...</strong>
    ) : (
      <div>
        {movies.map((movie) => {
          return (
            <div key={movie.id}>
              <a href={movie.url} target="_blank" rel="noreferrer">
                <h2>{movie.title}</h2>
              </a>
              <img src={movie.medium_cover_image} alt={movie.title} />
              {movie.genres.map((genre) => (
                <li key={genre}>{genre} </li>
              ))}
              <p>{movie.summary}</p>
            </div>
          );
        })}
      </div>
    )}
  </div>
);

ė•Œė•„ëģīęļ° ė‰―ęēŒ ė •ëĶŽí•˜ęļ° ėœ„í•ī js 파ėžė„ 하나 더 만ë“Īė–īė„œ ėŧī폮넌íŠļ로 만든 후 ėīëĨž export & import 했ë‹Ī.

import Movie from "./Movie";
import PropTypes from "prop-types";

Movie.propTypes = {
  title: PropTypes.string.isRequired,
  url: PropTypes.string.isRequired,
  img: PropTypes.string.isRequired,
  genres: PropTypes.arrayOf(PropTypes.string).isRequired,
  summary: PropTypes.string.isRequired,
};
// Movie.js
const Movie = ({ title, url, img, genres, summary }) => {
  return (
    <div>
      <a href={url} target="_blank" rel="noreferrer">
        <h2>{title}</h2>
      </a>
      <img src={img} alt={title} />
      {genres.map((genre) => (
        <li key={genre}>{genre} </li>
      ))}
      <p>{summary}</p>
    </div>
  );
};

export default Movie;

âœĻ ë‚īėž 할 ęēƒ

  1. movie app
profile
ëŠĨ동ė ėœžëĄœ ė‚īėž, 행ëģĩ하ęēŒðŸ˜

0개ė˜ 댓ęļ€