본문 바로가기
React 시리즈🌐/ReactJS로 영화 웹 서비스 만들기

🍿오늘 공부한 것 (정리 x)🍿

by @ENFJ 2021. 8. 20.
정리하면서 글 작성시 시간이 너무 걸릴거 같아서 그냥 코드 랑 출력결과를 위주로 올립니다.
- 공부의 목적은 글 작성이 아닌 이해가 우선!

 

 

1. 어떻게 object list(객체 리스트)를 가져오는지! 오직 JS 의 object(객체) 들만

2. map 이 하는것은 rendering 하지만 array 로부터 우리에게 array를 준다.

3. map 은 array 의 각 item에서 function을 실행하는 array를 가지는 javaScript fuction 이다.

그 function의 result 를 갖는 array를 너에게 줘.'

 

 

map 은 각각 item 별로 function 을 호출함.

item 이름: dish <- 라고  정해줌

map 은 뭐가 돌아오든 array로 돌려주기 때문

 

import React from 'react';  // 리엑트를 사용하려면 필수 구문.
import PropTypes from "prop-types";


const foodILike = [
  {
    id:1,
    name:"kimchi",
    image:
    "http://m.8go.kr/web/product/big/202102/a7aa14360fdb47b585ae860555369f30.jpg",
    rating:3.0
  },
  {
    id:2,
    name:"samgyeopsal",
    image:
    " http://image.newsis.com/2020/06/17/NISI20200617_0000546793_web.jpg",
    rating:5.0
  },
  {
    id:3,
    name:" bibimbap",
    image:
    "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Dolsot-bibimbap.jpg/220px-Dolsot-bibimbap.jpg",
    rating:4.0
  },
  {
    id:4,
    name:"jukumi",
    image:
    " https://recipe1.ezmember.co.kr/cache/recipe/2019/03/05/52d2be99c015378a75c9db81362422c71.jpg",
    rating:1.0
  }
];
  //함수 Food component
function Food({name, picture, rating}){   //props.fav 또는 {}내부에 fav를 쓰는것은 같은거임.
  return( 
    <div>
      <h2>i like {name}</h2>
      <h4>{rating}/5.0</h4>
      <img src={picture} alt={name} />
    </div>
  );
}

Food.propTypes = {
  name: PropTypes.string.isRequired,
  picture: PropTypes.string.isRequired,
  rating : PropTypes.number.isRequired
}

function App() {                    //이 애플래케이션에 food 컴포넌트 정보를 보내고, 그런다음에 food 컴포넌트에서 그정보를 어떻게 사용하는지!
  return (
     <div> 
        {foodILike.map(dish => (
          <Food key={dish.id} name={dish.name} picture={dish.image} rating={dish.rating} />//props
          ))}
     </div> 
    );
}

export default App;
//food component 에 정보를 보내는 방법.  -> food component에 fav라는 이름의 propery를 kimchi라는 value로 준거임.

 

 

 

 

import React from 'react';  // 리엑트를 사용하려면 필수 구문.
import PropTypes from "prop-types";

class App extends React.Component {
  state={
    count: 0  
  }
  add= () =>{
    this.setState(current =>({count: current.count +1}))
  };
  minus= () =>{
    this.setState(current =>({count: current.count -1}))
  };
  render(){
    return(
    <div>
      <h1>The number is : {this.state.count}</h1>
      <button onClick={this.add}>Add</button>
      <button onClick={this.minus}>Minus</button>
    </div>
    );
  }
} 
                             //class App 은 react component . 이단계는 필수
export default App;

 

 

app.js

import React from 'react';  // 리엑트를 사용하려면 필수 구문.
import axios from 'axios';
import Movie from "./movies";

class App extends React.Component {
  state ={
    isLoading: true,
    movies:[ ]
  };
  getMovies = async() => {
    const {data: {data:{movies}}} = await axios.get("https://yts-proxy.nomadcoders1.now.sh/list_movies.json?sort_by=rating")
   this.setState({movies, isLoading:false})
  }

  componentDidMount(){
    this.getMovies();
  }

  render(){
    const { isLoading, movies } = this.state;
    return (
     
      <section class="container">
        {isLoading ? (
          <div class="loader">
            <span class="loader__text">Loading...</span>
          </div>
      ) : (
      <div class="movies">
        {movies.map(movie => (
            <Movie
              key={movie.id}
              id={movie.id}
              year={movie.year}
              title={movie.title} 
              summary={movie.summary} 
              poster={movie.medium_cover_image}
              />
            ))}
      </div>
          
        )}
      </section>
    );
  }
}

export default App;

movies.js

 

import React from "react";
import PropTypes from "prop-types";


function Movie({id,year,title,summary,poster}){
  return (
  <div class="movies_movie">
    <h3 class="movie_title">{title}</h3>
    <h5 class="movie_year">{year}</h5>
    <p class="movie_summary">{summary}</p>
    </div>
    );
}

Movie.propTypes= {
  id: PropTypes.number.isRequired,
  year: PropTypes.number.isRequired,
  title: PropTypes.string.isRequired,
  summary: PropTypes.string.isRequired,
  poster: PropTypes.string.isRequired
}

export default Movie;

index.js

import React from 'react';
import ReactDOM from 'react-dom';

import App from './App';



ReactDOM.render(<App/>, document.getElementById('root'));