영화 앱 스타일링하기 - 기초
APP 컴포넌트에 HTML 추가하기
import axios from "axios";
import React from "react";
import Movie from "./Movie";
class App extends React.Component {
state = {
isLoading: true,
movies: [],
};
getMovies = async () => {
const {
data: {
data: { movies },
},
} = await axios.get(
"https://yts-proxy.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">로딩 중...</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;
Movie 컴포넌트에 HTML 추가하기
import React from "react";
import PropTypes from "prop-types";
const Movie = ({ id, title, year, summary, poster }) => {
return (
<div class="movie__data">
<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;

영화 포스터 이미지 추가하기

Movie 컴포넌트 정리하기
import React from "react";
import PropTypes from "prop-types";
const Movie = ({ title, year, summary, poster }) => {
return (
<div class="movie">
<img src={poster} alt={title} title={title} />
<div class="movie__data">
<h3 class="movie__title">{title}</h3>
<h5 class="movie__year">{year}</h5>
<p class="movie_summary">{summary}</p>
</div>
</div>
);
};
Movie.propTypes = {
year: PropTypes.number.isRequired,
title: PropTypes.string.isRequired,
summary: PropTypes.string.isRequired,
poster: PropTypes.string.isRequired,
};
export default Movie;
style 속성으로 title 스타일링하기
import React from "react";
import PropTypes from "prop-types";
const Movie = ({ title, year, summary, poster }) => {
return (
<div class="movie">
<img src={poster} alt={title} title={title} />
<div class="movie__data">
<h3 class="movie__title" style={{ backgroundColor: "red" }}>
{title}
</h3>
<h5 class="movie__year">{year}</h5>
<p class="movie_summary">{summary}</p>
</div>
</div>
);
};
Movie.propTypes = {
year: PropTypes.number.isRequired,
title: PropTypes.string.isRequired,
summary: PropTypes.string.isRequired,
poster: PropTypes.string.isRequired,
};
export default Movie;

CSS 파일 생성하기
src 폴더에 Movie.css, App.css 파일을 만듭시다.

App, Movie 컴포넌트에 CSS 파일 임포트하기
import axios from "axios";
import React from "react";
import Movie from "./Movie";
import "./App.css";
class App extends React.Component {
state = {
isLoading: true,
movies: [],
};
getMovies = async () => {
const {
data: {
data: { movies },
},
} = await axios.get(
"https://yts-proxy.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">로딩 중...</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;
import React from "react";
import PropTypes from "prop-types";
import "./Movie.css";
const Movie = ({ title, year, summary, poster }) => {
return (
<div class="movie">
<img src={poster} alt={title} title={title} />
<div class="movie__data">
<h3 class="movie__title">{title}</h3>
<h5 class="movie__year">{year}</h5>
<p class="movie_summary">{summary}</p>
</div>
</div>
);
};
Movie.propTypes = {
year: PropTypes.number.isRequired,
title: PropTypes.string.isRequired,
summary: PropTypes.string.isRequired,
poster: PropTypes.string.isRequired,
};
export default Movie;
App.css 파일 작성하기
body {
background-color: #2f2f2f;
}

'프로그래밍 언어 > REACT' 카테고리의 다른 글
| react-router-dom 설치하고 프로젝트 폴더 정리하기 (0) | 2025.02.11 |
|---|---|
| 영화 앱 멋지게 스타일링하기 (1) | 2025.02.09 |
| Movie 컴포넌트 만들기 (0) | 2025.02.06 |
| 영화 데이터 화면에 그리기 (0) | 2025.02.05 |
| 영화 API 사용해 보기 (1) | 2025.02.04 |