본문 바로가기
Frontend

Recoil-Persist

by 잘먹는 개발자 에단 2025. 3. 24.

Recoil-Persist는 Recoil atom (전역상태)을 브라우저(또는 리액트 네이티브)의 영구저장소(LocalStorage, SessionStorage, AsyncStorage등)에 자동으로 저장 Persist 하고 페이지 리로드 시 저장된 값을 복원 rehydrate 해주는 가벼운 라이브러리이다.

 

- 선택적 Persistence : 특정 atom만 골라서 저장가능

- 만료 설정 가능 : 저장 데이터의 TTL ( time to live ) 지정

- 타입스크립트 지원 : 제네릭 타입 정의 가능

 

* 예시 * 

import React from 'react';
import { RecoilRoot, atom, useRecoilState } from 'recoil';
import { recoilPersist } from 'recoil-persist';

const { persistAtom } = recoilPersist();

const counterAtom = atom<number>({
	key : 'counter',
    default : 0,
    effect_UNSTABLE : [persistAtom],
});

function Counter(){
	const [count, setCount] = useRecoilState(counterAtom);
    
    return(
    	<>
        	.....
        </>
    )
}


export default function App(){
	return
    (
    	<RecoilRoot>
        	<......>
        </RecoilRoot>
    )
}

 

** 

effects_UNSTABLE 배열에 persistAtom을 추가하면 해당 atom이 LocalStorage에 저장되고, 앱 재시작 시 복원된다. 

 

 

 

 

** 고급설정 **

const {persistAtom} = recoilPersist({
	key : 'my-app',
    storage : sessionStorage,
    expireTime : 1000 * 60 * 60 * 24, // 밀리초 단위
    hydrate : true
});

 

key : 저장소 key prefix : 기본값은 'recoil-persist'

storage : 저장소 객체 localStorage | sessionStorage | AsyncStorage : 기본값은 localStorage

expireTime : 만료시간 ( 밀리초 ) :기본값은 undefined(무기한)

hydrate : 초기 복원 여부 : 기본값은 true

 

 

** 데이터 삭제 및 초기화 **

// 특정 atom 초기화 - localstorage에서 제거
localStorage.removeItem('recoil-persist/counter');

// 전체삭제
localStorage.clear();

'Frontend' 카테고리의 다른 글

css -> tailwind css  (0) 2025.03.28
npm, package.json, package-lock.json  (0) 2025.03.18
인증  (0) 2024.12.17
왜 BrowserRouter는 새로고침하면 404 에러가 뜰까  (2) 2024.11.17
HashRouter의 #는 어떤 역할을 하는가  (0) 2024.11.17