{isLoading ? "Loading..." : JSON.stringify(movies)} ) }"> {isLoading ? "Loading..." : JSON.stringify(movies)} ) }"> {isLoading ? "Loading..." : JSON.stringify(movies)} ) }">
export default function Page() {
const [isLoading, setIsLoading] = useState(true);
const [movies, setMovies] = useState([]);
useEffect(() => {
const getMovies = async () => {
const response = await fetch("<https://nomad-movies.nomadcoders.workers.dev/movies>");
const json = await response.json();
setMovies(json);
setIsLoading(false);
}
getMovies()
}, []);
return (
<div>
{isLoading ? "Loading..." : JSON.stringify(movies)}
</div>
)
}
useState를 사용하여 데이터를 저장할 상태와 로딩 상태를 관리한다true로 시작한다useEffect를 활용하여 컴포넌트가 처음 렌더링될 때 fetch 함수를 호출fetch는 비동기 함수(async)로 작성되며, API URL에서 데이터를 가져와 JSON으로 변환한 후 상태를 업데이트fetch는 클라이언트 측에서 실행되므로 브라우저에서 API 요청 수행된다useEffect, useState, 로딩 상태 등을 직접 관리할 필요 없이 프레임워크가 이를 처리 해준다