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

#7.4 Movie App part Two

유호야 2023. 5. 24. 02:14
반응형
<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>

 

medium_cover_image 자바스크립트에서는 왼쪽보다 오른쪽처럼 작성 mediumCoverImage

import PropTypes from "prop-types";

 

Movie component의 proptype 설정

Movie.propTypes = {
  coverImg: PropTypes.string.isRequired,
  title: PropTypes.string.isRequired,
  summary: PropTypes.string.isRequired,
  genres: PropTypes.arrayOf(PropTypes.string).isRequired,
}

 

React Router

페이지 전환

react-router-dom 설치 필요

npm install react-router

npm install react-router-dom

 

스크린 별로 컴포넌트가 나뉘기 때문에 이제 route 별로 생각해야 한다

 

 

App.js

function App() {
  return null;
}

export default App;

 

Detail.js

function Detail() {
  return <h1>Detail</h1>
}

export default Detail;

 

Home.js

import Movie from "./components/Movie";
import { useEffect, useState } from "react";

function Home() {
  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) =>
            <Movie
              key={movie.id}
              title={movie.title}
              summary={movie.summary}
              coverImg={movie.medium_cover_image}
              genres={movie.genres}
              id={movie.id}
            />
          )}
        </div>
      }
    </div >
  );
}

export default Home;

 

Movie.js

import PropTypes from "prop-types";

function Movie({ id, title, summary, coverImg, genres }) {
  return (
    <div key={id}>
      <h1>{title}</h1>
      <p>{summary}</p>
      <img src={coverImg} alt={title} />
      <ul>
        {genres.map((genre) => <li key={genre}>{genre}</li>)}
      </ul>
    </div>
  );
}

Movie.propTypes = {
  coverImg: PropTypes.string.isRequired,
  title: PropTypes.string.isRequired,
  summary: PropTypes.string.isRequired,
  genres: PropTypes.arrayOf(PropTypes.string).isRequired,
}

export default Movie;
반응형

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

#7.6 Parameters  (0) 2023.05.24
#7.5 React Router  (0) 2023.05.24
API FETCH 및 로딩 구현 복습  (0) 2023.05.24
#7.3 Movie App part One  (0) 2023.05.24
#7.2 Coin Tracker  (0) 2023.05.24