728x90
...
{movies.map((movie) => (
<div key={movie.div}>
<img src={movie.medium_cover_image} />
<h2>{movie.title}</h2>
...
1. 앱 안에서 페이지를 전환하는 법
- 로딩화면과 object 받아오기
import { useEffect, useState } from "react";
function App() {
const [loading, setLoading] = useState(true);
const [movies, setMovies] = useState([]);
useEffect(() => {
fetch(
"https://yts.mx/api/v2/list_movies.json?minimum_rating=8.5&sort_by=year"
)
.then((response) => response.json())
.then((json) => {
setMovies(json.data.movies);
setLoading(false);
});
}, []);
console.log(movies);
return <div>{loading ? <h1>Loading ... </h1> : null}</div>;
}
export default App;
2. then 대신 async-await 사용하기
import { useEffect, useState } 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=8.5&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> : null}</div>;
}
export default App;
여기서 더 짧은 코드를 원하는 경우 아래와 같이 수정할 수 있다.
const getMovies = async () => {
const json = await (
await fetch(
"https://yts.mx/api/v2/list_movies.json?minimum_rating=8.5&sort_by=year"
)
).json();
setMovies(json.data.movies);
setLoading(false);
};
3. loading 화면 이후 movie 화면 보이도록하기
- {} 안이면 다시 {}를 해주지 않아도 된다.
import { useEffect, useState } from "react";
function App() {
const [loading, setLoading] = useState(true);
const [movies, setMovies] = useState([]);
const getMovies = async () => {
const json = await (
await fetch(
"https://yts.mx/api/v2/list_movies.json?minimum_rating=8.5&sort_by=year"
)
).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.div}>
<h2>{movie.title}</h2>
<p>{movie.summery}</p>
<ul>
{movie.genres.map((g) => (
<li key={g}>{g}</li>
))}
</ul>
</div>
))}
</div>
)}
</div>
);
}
export default App;
map 사용 시 key를 꼭 넣어줘야한다.
4. 이미지 가져오기
{movies.map((movie) => (
<div key={movie.div}>
<img src={movie.medium_cover_image} />
<h2>{movie.title}</h2>
...
728x90
'React > 영화웹서비스만들기' 카테고리의 다른 글
Coin Tracker 만들기 (0) | 2024.04.18 |
---|---|
간단한 to-do List 만들기 (2) (0) | 2024.04.18 |
간단한 to-do List 만들기 (1) (0) | 2024.04.18 |
Cleanup (0) | 2024.04.18 |
Deps (0) | 2024.04.17 |