일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오공완
- 클래스 추가하기 #특정 url 클래스 추가 #사이트 접속시 클래스 추가 #오공완 #javascript
- 오공완 #리액트 공부 #React
- map()에는 key값이 필요
- 리스트랜더링
- React
- 리액트
- Today
- Total
new_bird-hyun
Zustand와 서버 컴포넌트(Server Components)를 결합하여 상태 관리 최적화하기 본문
- Zustand를 활용한 클라이언트 및 서버 컴포넌트 상태 공유 방법
- Next.js 서버 컴포넌트(Server Components)와 Zustand의 역할 비교
- 클라이언트 측 상태 관리와 서버 데이터 패칭을 조합하는 최적의 패턴
store/useStore.js (Zustand 상태 관리)
import { create } from 'zustand';
const useStore = create((set) => ({
username: '',
setUsername: (name) => set({ username: name }),
}));
export default useStore;
components/ClientComponent.js (클라이언트 컴포넌트)
'use client';
import useStore from '../store/useStore';
export default function ClientComponent() {
const { username, setUsername } = useStore();
return (
<div>
<h2>클라이언트 컴포넌트</h2>
<p>현재 사용자: {username || '없음'}</p>
<input
type="text"
placeholder="이름 입력"
onChange={(e) => setUsername(e.target.value)}
/>
</div>
);
}
components/ServerComponent.js (서버 컴포넌트에서 데이터 패칭)
export default async function ServerComponent() {
const res = await fetch('https://jsonplaceholder.typicode.com/users/1');
const user = await res.json();
return (
<div>
<h2>서버 컴포넌트</h2>
<p>서버에서 불러온 사용자: {user.name}</p>
</div>
);
}
app/page.js
import ServerComponent from './components/ServerComponent';
import ClientComponent from './components/ClientComponent';
export default function Home() {
return (
<div>
<ServerComponent />
<ClientComponent />
</div>
);
}
Zustand와 서버 컴포넌트를 조합하면 서버 데이터와 클라이언트 상태를 효율적으로 관리 가능
'코딩 공부' 카테고리의 다른 글
Next.js와 WebSocket을 활용한 실시간 채팅 애플리케이션 구현 (0) | 2025.03.16 |
---|---|
Next.js에서 Zustand와 SWR을 활용한 실시간 데이터 동기화 전략 (0) | 2025.03.14 |
Next.js에서 OAuth + RBAC(역할 기반 접근 제어) 구현하기 (0) | 2025.03.09 |
Next.js에서 미들웨어를 활용한 역할 기반 접근 제어(RBAC) 구현 (0) | 2025.03.08 |
Next.js에서 사용자 역할(Role-Based Access Control, RBAC)을 활용한 권한 관리 (0) | 2025.03.04 |