티스토리 뷰

Props로 내려주는 연습을 자꾸해보자!

할수있다 이채야채!!

 

원래 만들었던 영화 만들기 어플

import logo from './logo.svg';
import {useState, useEffect} from "react"
import './App.css';

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=8.8&sort_by=year`)
    const json = await response.json()
    setMovies(json.data.movies)
    setLoading(false)

  }
 
  useEffect( ()=>{
    getMovies()
  } 
  ,[])
  console.log(movies)

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

export default App;

 

 

 


 

 

 

 

 

Movie 컴포넌트

function Movie({coverImg, title, summary, genres}){ 
    return(
        <div >
            <img src = {coverImg} alt = {title}></img>
            <h2>{title}</h2> 
            <p>{summary}</p>
            <ul>
                 {genres.map(g => 
                 <li key = {g}>{g}</li>
                )}
            </ul>
        </div>
    )
}
export default Movie;

 

 

Movie 컴포넌트는 {coverImg, title, summary, genres}  이 프로퍼티를 모두 부모 컴포넌트인 App 컴포넌트에서 받아온다.

 

App.js 수정
import logo from './logo.svg';
import {useState, useEffect} from "react"
import './App.css';
import Movie from "./Movie"

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=8.8&sort_by=year`)
    const json = await response.json()
    setMovies(json.data.movies)
    setLoading(false)

  }
 
  useEffect( ()=>{
    getMovies()
  } 
  ,[])
  console.log(movies)

  return ( 
    <div className="App">
     {loading ? <h1>Loading...</h1> : <div>{movies.map((movie)=>{
          return <Movie coverImg = {movie.medium_cover_image} 
                        title = {movie.title} 
                        summary = {movie.summary} 
                        genres = {movie.genres}/>
     })}</div>}
    </div>
  );
}

export default App;
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함