Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- padding 속성
- RGB
- Checked 의사 클래스
- iframe 태그
- id 선택자
- sup태그
- 전체 선택자
- html
- RGBA
- 임베디드
- go live
- tag html
- reveal in file explorer
- i 태그
- Live Server
- height속성
- width속성
- 자식결합자
- html 태그
- iframe
- html tag i
- 일반 형제 결합자
- br 태그
- background-color 속성
- not 의사클래스
- 인접 형제 결합자
- focus 의사클래스
- sub태그
- css
- 아두이노
Archives
- Today
- Total
so woon!
[React] async() 사용하기 본문
학습일 : 2023. 03. 19
<App.js>
useEffect 안에서 fetch 시 사용했던
.then 보다는
async() 를 더 자주사용한다고 한다.
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 ? <h3>로딩 중...</h3> : null}</div>;
}
export default App;
async()를 사용하여 작성하는 방법은 아래와 같다.
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();
}, []);
위와 아래는 결과는 같지만 위의 코드를
더 많이 쓴다고 함.
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);
});
}, []);
전체 코드
다시한번 key를 주는걸 연습해보았다.
key는 unique 여야 하므로
영화마다 고유한 id가 있기 때문에
movie.id 로 key를 주었다.
getMovies를 정의해주고
이걸 한번만 불러올 것이기 때문에
useEffect를 사용해서 getMovies를 호출해주고 빈배열을 넘겨주었다.
로딩중일땐 로딩중이라는 문구가 출력되고
로딩이 끝났으면
영화 정보(아래 코드에선 영화의 제목) 이 뜰 수 있게 하였다.
import { useEffect, useState } from "react";
import styles from "./App.module.css";
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를 호출
useEffect(() => {
getMovies();
}, []);
return (
<div>
{loading ? (
<h3>로딩 중...</h3>
) : (
<div>
{movies.map((movie) => (
<div key={movie.id}>
<h2>{movie.title}</h2>
</div> // key는 unique 여야 한다. fetch 사이트에서 보면 영화마다 고유한 id가 있기 때문에 그걸 가져다 쓸거임.
))}
</div>
)}
</div>
);
}
export default App;
실행결과
'ReactJS > 개념정리' 카테고리의 다른 글
[React] <component /> 사용하기 (0) | 2023.03.20 |
---|---|
[React] 영화 정보 불러오기 (0) | 2023.03.20 |
[React] 영화정보 api fetch 하기 (0) | 2023.03.19 |
[React] 코인변환기 만들기 (0) | 2023.03.19 |
[React] URL fetch하기 | 코인 정보 불러오기 (0) | 2023.03.18 |
Comments