Skip to Content
Suffering builds character
아카이브9.Next.js특징데이터 페칭1. 데이터 가져오기

1. 데이터 가져오기

서버 컴포넌트에서 데이터를 가져오는 처리 로직은 Web API인 fetch를 활용하면 됨

다음은 블로그 포스트의 리스트 데이터를 가져오는 예시

page.js
// 서버 컴포넌트에서도 async/await 키워드를 통해 비동기 요청 처리 가능 export default async function Page() { const data = await fetch('https://api.vercel.app/blog'); const posts = await data.json(); return ( <ul> {posts.map((post) => ( <li key={post.id}>{post.title}</li> ))} </ul> ) }

2. 로딩, 에러 처리하기

전통적인 리액트에서는 별도의 변수나 상태 값을 통해 조건부로 렌더링 UI를 관리하였음

page.js
import React, { useState } from "react"; function App() { // 로딩 상태를 관리하기 위한 별도의 상태 변수 const [isLoggedIn, setIsLoggedIn] = useState(false); return ( <div> {isLoggedIn ? ( <h1>Welcome back!</h1> ) : ( <h1>Please log in.</h1> )} <button onClick={() => setIsLoggedIn(!isLoggedIn)}> {isLoggedIn ? "로그아웃" : "로그인"} </button> </div> ); } export default App;

하지만 이후 서버 컴포넌트 기반 작성 방식에서는 이 방식이 보다 간소화되었으며,

로딩 상태를 관리하기 위해서는 loading.js를 작성하면 되고, 에러 핸들링을 위해서는 error.js를 작성하면 됨 → 1.Routing/ 파트에서 진행

Last updated on