클라이언트 상태 관리 예시
- 폼 입력값
- 인증상태 (로그인/로그아웃)
- 프로필정보
- 테마 모드
- 언어 설정
- 모달 열림 상태
- 탭 및 사이드바 상태
서버 상태 관리
- 항상 최신 상태로 DB와 동기화가 필요할때
- 다른 사용자에게 영향을 줄 수 있는 데이터
- 데이터를 가져오는 데 시간이 소요되고(로딩스피너 필요) 잦은 조회로 캐싱이 필요한 데이터
zustand
import {create} from 'zustand';
const useCalculatorstore = create((set)) => ({
result : 0,
incrementByAmount: (amount) => {
set(({result}) => ({result : result + amount}));
},
decrementByAmount : (amout) => {
set(({result}) => ({result : result - amount}))
},
})
//immer버전
import {immer} from 'zustand/middleware/immer';
const useCalculatorStore = create(
immer((set) => ({
result: 0,
incrementByAmount: (amount) => {
set((state) => {
state.result += amount;
});
},
decrementByAmount: (amount) => {
set((state) => {
state.result -= amount;
});
},
}))
);
'개발 일기' 카테고리의 다른 글
2024-12-02(tanstack query - 더보기, 무한스크롤) (1) | 2024.12.02 |
---|---|
2024-11-29(tanstack query) (0) | 2024.11.29 |
2024-11-25(rest api , axios, tanstack query) (0) | 2024.11.25 |
2024-11-22(비동기,http상태) (0) | 2024.11.22 |
2024-11-21(피드백) (0) | 2024.11.21 |