온라인 강의/ReactJS로 영화 웹 서비스 만들기 [Nomad]

#7.3 Movie App part One

유호야 2023. 5. 24. 01:02
반응형

 

https://yts.mx/api/v2/list_movies.json?minimum_rating=9&sort_by=year 

 

이 영화 api 정보들을 가지고 만들어본다

 

then 보다 자주 사용하는 최신 async-await

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

 

아래와 같이 변경할 수 있다

흠... 외워야 하나 

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

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

 

 


 

한 번 더 시간 버린 () 문제 

=> 이후에 {} 아닌 () 쓰거나 그냥 비워두기

<div>
          {movies.map((movie) =>
            <div key={movie.id}>
              <h1>{movie.title}</h1>
              <p>{movie.summary}</p>
            </div>)}
        </div>

 

map 사용할 때 key 값 주는 것 잊지 말기!

 

map()으로 값을 가져오는 경우 img 이미지를 넣을 때 src에 "" 가 필요없다! 

<img src={movie.medium_cover_image} />

 

다음 시간에는 영화 제목을 클릭하면 상세 화면으로 나가는 부분을 진행하겠다

 

전체 코드

import { useState, useEffect } from 'react';

function App() {
  const [loading, setLoading] = useState(true);
  const [movies, setMovies] = useState([]);

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

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

  console.log(movies);

  return (
    <div>
      {loading ? <h1>Loading</h1> :
        <div>
          {movies.map((movie) =>
            <div key={movie.id}>
              <h1>{movie.title}</h1>
              <p>{movie.summary}</p>
              <img src={movie.medium_cover_image} />
              <ul>
                {movie.genres.map((genre) => <li key={genre}>{genre}</li>)}
              </ul>
            </div>)}
        </div>
      }
    </div >
  );
}

export default App;
반응형

'온라인 강의 > ReactJS로 영화 웹 서비스 만들기 [Nomad]' 카테고리의 다른 글

#7.4 Movie App part Two  (0) 2023.05.24
API FETCH 및 로딩 구현 복습  (0) 2023.05.24
#7.2 Coin Tracker  (0) 2023.05.24
#7.1 To Do List part Two  (0) 2023.05.23
#7.0 To Do List part One  (0) 2023.05.23