일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오공완
- map()에는 key값이 필요
- 리액트
- 리스트랜더링
- 클래스 추가하기 #특정 url 클래스 추가 #사이트 접속시 클래스 추가 #오공완 #javascript
- 오공완 #리액트 공부 #React
- React
- Today
- Total
new_bird-hyun
Next.js에서 Zustand와 SWR을 활용한 실시간 데이터 동기화 전략 본문
- SWR과 Zustand를 결합하여 클라이언트 및 서버 데이터를 동기화하는 방법
- 데이터 정합성을 유지하면서 상태를 업데이트하는 전략
- 실시간 데이터 패칭과 캐싱을 최적화하는 기법
npm install swr zustand
store/useDataStore.js (Zustand 전역 상태)
import { create } from 'zustand';
const useDataStore = create((set) => ({
data: null,
updateData: (newData) => set({ data: newData }),
}));
export default useDataStore;
components/LiveData.js (SWR을 활용한 실시간 데이터 패칭)
'use client';
import useSWR from 'swr';
import useDataStore from '../store/useDataStore';
const fetcher = (url) => fetch(url).then((res) => res.json());
export default function LiveData() {
const { data, error } = useSWR('https://jsonplaceholder.typicode.com/posts/1', fetcher, {
refreshInterval: 5000, // 5초마다 데이터 갱신
});
const updateData = useDataStore((state) => state.updateData);
if (error) return <p>데이터를 불러오는 중 오류 발생</p>;
if (!data) return <p>로딩 중...</p>;
updateData(data);
return (
<div>
<h2>실시간 데이터</h2>
<p>제목: {data.title}</p>
<p>내용: {data.body}</p>
</div>
);
}
components/GlobalState.js (Zustand 전역 상태 확인)
'use client';
import useDataStore from '../store/useDataStore';
export default function GlobalState() {
const data = useDataStore((state) => state.data);
return (
<div>
<h2>전역 상태 데이터</h2>
{data ? <p>{data.title}</p> : <p>데이터 없음</p>}
</div>
);
}
app/page.js (전체 페이지 구성)
import LiveData from '../components/LiveData';
import GlobalState from '../components/GlobalState';
export default function Home() {
return (
<div>
<LiveData />
<GlobalState />
</div>
);
}
- SWR을 활용하면 자동으로 데이터를 갱신하고 캐싱할 수 있음
- Zustand와 결합하면 전역 상태에서 최신 데이터를 유지하면서 UI를 최적화 가능
'코딩 공부' 카테고리의 다른 글
Next.js에서 Server-Sent Events(SSE)와 WebSocket 비교 및 실시간 데이터 처리 (0) | 2025.03.17 |
---|---|
Next.js와 WebSocket을 활용한 실시간 채팅 애플리케이션 구현 (0) | 2025.03.16 |
Zustand와 서버 컴포넌트(Server Components)를 결합하여 상태 관리 최적화하기 (0) | 2025.03.12 |
Next.js에서 OAuth + RBAC(역할 기반 접근 제어) 구현하기 (0) | 2025.03.09 |
Next.js에서 미들웨어를 활용한 역할 기반 접근 제어(RBAC) 구현 (0) | 2025.03.08 |