티스토리 뷰
Next.js를 사용하면서 캐싱된 데이터를 revalidatePath를 통해 새로 가져오는 방법에 대해 알아보자
revalidatePath란?
revalidatePath는 특정 경로에 대한 캐시된 데이터를 필요에 따라 지울 수 있는 기능이다. 이를 통해 특정 경로의 데이터를 업데이트할 수 있다.
찜한 영화 목록을 불러오는 api 함수와 찜 영화를 추가하는 함수로 예시를 보자
getFavoriteMovies.ts 코드
"use server";
import { SERVER_URL } from "@/constans";
export const getFavoriteMovies = async (id: any) => {
const response = await fetch(`${SERVER_URL}/favorites/${id}`);
return response.json();
};
영화 목록을 불러오는 api 함수이다.
해당 함수는 /user/[id] 폴더에 있는 page.tsx에서 실행된다. 즉 데이터가 변경될 때 /user/[id] 경로에 있는 데이터를 새로 가져오게 하면 된다.
page.tsx 코드
import { getFavoriteMovies } from "@/app/api/get-favorite-movies";
import FavoriteMovies from "../../_components/user/favorite-movies";
import style from "../../styles/user/page.module.css";
export default async function User({ params }: any) {
const movies = await getFavoriteMovies(params.id);
return (
<div className={style.container}>
<h4>찜한 영화 목록</h4>
<FavoriteMovies movies={movies} />
</div>
);
}
이제 해당 데이터를 업데이트하는 함수(추가 버튼 등등..)에 revalidatePath('해당 경로', 'page')를 추가해주면 된다.
addFavroiteMovie.ts 코드
"use server";
import { SERVER_URL } from "@/constans";
import { revalidatePath} from "next/cache";
export const addFavoriteMovie = async (data: any) => {
const response = await fetch(`${SERVER_URL}/favorites`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
});
revalidatePath("/user/[id]", "page");
return response.json();
};
실행화면
새로고침 없이 데이터가 추가되는 것을 확인할 수 있다.
참고1: https://nextjs.org/docs/app/api-reference/functions/revalidatePath
참고2: https://nomadcoders.co/nextjs-for-beginners/lectures/4705
'Next.js' 카테고리의 다른 글
[Next.js] Next.js에서 NextAuth 사용하기 (0) | 2024.03.02 |
---|---|
[Next.js] Next.js에서 zustand 사용하기 (1) | 2024.02.26 |
[Next.js] Next.js 14 revalidateTag (0) | 2024.02.18 |
[Next.js] Next.js 14 Server Side Data Fetching (0) | 2024.02.17 |
[Next.js] Next.js 14 Dynamic Routing (0) | 2024.02.11 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 4659
- 해시를 사용한 집합과 맵
- rc-dock
- baekjoon
- 20551
- revalidatePath
- dynamic routing
- React
- Next.js
- revalidateTag
- react-three-fiber
- React.JS
- useMemo
- js
- useMutation
- eventemitter3
- stompjs
- 25329
- 24431
- RefreshToken
- sepolia
- 백준
- useQuery
- useState
- 9575
- react-query
- NextAuth
- useCallback
- react-quey
- zustand
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함