티스토리 뷰
1. 로딩 컴포넌트, loading.tsx
서버 컴포넌트에서 렌더링되기까지 시간이 매우 오래 걸리는 경우도 있을 수 있다.
async function getMovies() {
await new Promise((resolve) => setTimeout(resolve, 5000)); // 5초 추가
const response = await fetch(process.env.MOVIES);
const json = await response.json();
return json;
}
getMovies의 코드에 5초정도 추가로 시간이 걸리게 코드를 한 줄 추가하였다. 이런 식으로 렌더링되기까지 시간이 오래 걸릴 경우에는 아래의 움짤처럼 동작하게 된다.
사용자는 뭐가 뭔지도 모르는 상황이 되어 버린다. 그렇기에 로딩 중이라는 것을 보여줄 무언가가 필요한데, 이는 Next.js에서 매우 쉽게 추가해줄 수 있다. 바로 page.tsx(page.jsx)와 같은 위치에 loading.tsx(loading.jsx)라는 이름의 컴포넌트를 추가해주기만 하면 된다.
export default function Loading() {
return <h2>Loading...</h2>;
}
예를 들어, page.tsx와 같은 위치에 이런 loading.tsx 파일을 추가할 경우, 아래처럼 로딩 중임을 보여줄 수 있다.
2. Next.js의 loading.tsx와 Streaming
Next.js는 특정 page.tsx와 같은 페이지에 loading.tsx 파일을 추가하면 해당 페이지가 데이터를 불러오는 동안 로딩 상태를 사용자에게 보여줄 수 있는데, 이는 Stremaing 기능과 연관이 있다.
- loading.tsx 파일: 페이지가 데이터를 비동기로 로드하는 동안 표시할 로딩 UI를 정의한다. Next.js는 데이터를 모두 받아오기 전에 loading.tsx에 정의된 내용을 먼저 렌더링하여 사용자가 즉시 피드백을 받을 수 있게 한다.
- Streaming: Next.js의 Streaming 기능을 통해, 서버는 데이터를 점진적으로 클라이언트에 전송하고, 클라이언트는 데이터를 모두 받기 전에 중요한 콘텐츠부터 순차적으로 렌더링한다. 이로 인해 페이지 로딩 속도가 크게 개선된다.
'기록' 카테고리의 다른 글
Next.js에서의 useFormStatus, useFormState (0) | 2024.09.29 |
---|---|
Suspense 간단히 이용해보기 (0) | 2024.09.07 |
Next.js 클라이언트 컴포넌트와 서버 컴포넌트 차이점 간단 요약 (2) | 2024.09.07 |
유저 이름 변경하기 (0) | 2024.08.25 |
게시물 업데이트하기 (2) | 2024.08.25 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코드스테이츠
- react
- SQL
- NextJS
- 햄버거버튼
- 동적계획법
- 넥스트js
- 구현
- 브루트포스
- 카카오맵
- 비트마스킹
- C++
- themoviedb
- 프로그래머스
- BFS
- Redux
- async
- 스택
- 타입스크립트
- Next.js
- 완전탐색
- 백준
- 리액트
- CSS
- typescript
- 순열
- aws
- 자바스크립트
- 다이나믹프로그래밍
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함