Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- setInterval 정지
- pm2 상태 확인
- 서버동기화
- mySQL_Replication
- map이 undefined가 뜰 때
- 데이터테이블 데이터 넣기
- invalid data
- 공인IP
- DatePicker
- pm2 시작
- html #select #option #multiple
- pm2
- pm2 확인
- c# datagridview 데이터 넣기
- allow_anonymouse
- transfer
- Replication
- 1883
- pm2 설치
- listener 1883
- timepicker
- setInterval 외부 정지
- setInterval 중지
- mosquitto.conf
- DataGridView 직접 입력
- 맥 어드레스
- setInterval clear
- AntDesign
- datagridview 직접입력
- mosquitto
Archives
- Today
- Total
개발 노트
로컬스토리지에 값 저장하기 본문
1. 페이지 정보를 로컬스토리지에 저장하려고 하는데 라우팅을 사용하지않고 좌우 컴포넌트를 별개로 두고 zustand 에 저장값을 넣어서 적용시킴
import {create} from 'zustand';
type Store = {
leftComponent: string | null;
rightComponent: string | null;
activeButton: string | null;
setLeftComponent: (name: string) => void;
setRightComponent: (name: string) => void;
setActiveButton: (name: string) => void;
};
export const usePageStore = create<Store>((set) => ({
leftComponent: null,
rightComponent: null,
activeButton: null,
setLeftComponent: (name) => set(() => ({ leftComponent: name })),
setRightComponent: (name) => set(() => ({ rightComponent: name })),
setActiveButton: (name) => set(() => ({ activeButton: name })),
}));
2. 여기서 zustand에서 저장하는 값을 바로 localStorage에 업데이트함
3. 로컬스토리지에 값이 있으면 그 값을 불러오고 값이 없으면 빈객체를 가져옴
import { create } from 'zustand';
// 스토어 타입 정의
type Store = {
leftComponent: string | null;
rightComponent: string | null;
activeButton: string | null;
setLeftComponent: (name: string) => void;
setRightComponent: (name: string) => void;
setActiveButton: (name: string) => void;
};
// 로컬 스토리지 키 이름 정의
const STORE_KEY = 'page';
// 로컬 스토리지에서 스토어 상태 로드
function loadFromLocalStorage() {
const savedState = localStorage.getItem(STORE_KEY);
return savedState ? JSON.parse(savedState) : {};
}
// 스토어 생성 및 초기 상태 설정
export const usePageStore = create<Store>((set) => ({
...loadFromLocalStorage(), // 로컬 스토리지에서 로드한 상태로 초기화
setLeftComponent: (name) => set(() => ({ leftComponent: name })),
setRightComponent: (name) => set(() => ({ rightComponent: name })),
setActiveButton: (name) => set(() => ({ activeButton: name })),
}));
// 스토어 상태 변경 시 로컬 스토리지에 저장
usePageStore.subscribe((state) => {
localStorage.setItem(STORE_KEY, JSON.stringify(state));
});
'React' 카테고리의 다른 글
fetch를 위해 알아본 자료들 (0) | 2024.04.02 |
---|---|
새 글 정보 알람 기능 (0) | 2024.03.22 |
modal dialog component만들기 (0) | 2024.03.20 |
필터기능 구현 (0) | 2024.03.18 |
자료구조 변경 비교 (0) | 2024.03.13 |