Next.js App Router에서 서버 컴포넌트와 클라이언트 컴포넌트를 같이 쓸 때 헷갈리는 부분이 있어요. 아래처럼 서버 컴포넌트에서 데이터를 fetch하고 클라이언트 컴포넌트에 props로 넘기고 있는데, 버튼 클릭 시 데이터를 다시 불러오려면 어떤 방식이 좋을까요?
router.refresh() vs 클라이언트에서 직접 fetch 두 가지 방법의 차이가 궁금합니다.
// components/PostList.jsx (클라이언트 컴포넌트)
'use client';
import { useState } from 'react';
export default function PostList({ posts }) {
const [items, setItems] = useState(posts);
const handleRefresh = () => {
// 여기서 데이터를 다시 불러오고 싶은데
// fetch를 직접 호출하면 되는 건지,
// router.refresh()를 써야 하는 건지 모르겠습니다
};
return (
<div>
<button onClick={handleRefresh}>새로고침</button>
{items.map((post) => (
<article key={post.id}>
<h2>{post.title}</h2>
<p>{post.content}</p>
</article>
))}
</div>
);
}
[AI가 생성한 질문 예시입니다]