atom
역할: 상태(State)의 가장 기본적인 단위.
설명: 애플리케이션에서 독립적인 상태를 나타냄. atom으로 정의된 상태는 여러 컴포넌트에서 읽고, 업데이트할 수 있음.
예제:
import { atom } from 'recoil';
export const counterState = atom({
key: 'counterState', // 고유 키 (필수)
default: 0, // 초기값
});
selector
역할: 파생된 상태(Derived State)를 계산.
설명: atom 상태나 다른 selector 상태를 기반으로 계산된 상태를 생성.
캐싱을 지원하여 성능 최적화. 컴포넌트에서 읽기 전용 또는 동기/비동기 상태를 관리할 수 있음.
예제:
import { selector } from 'recoil';
import { counterState } from './atoms';
export const doubledCounterState = selector({
key: 'doubledCounterState',
get: ({ get }) => {
const count = get(counterState);
return count * 2; // counterState의 값에 2를 곱한 결과를 반환
},
});
상태 비동기 관리
import { selector } from 'recoil';
export const fetchDataSelector = selector({
key: 'fetchDataSelector',
get: async () => {
const response = awai fetch('https://api.example.com/data');
const data = await response.json();
return data;
},
});
useRecoilState:
const [count, setCount] = useRecoilState(counterState);
useRecoilValue:
const doubledCount = useRecoilValue(doubledCounterState);
useSetRecoilState:
const setCount = useSetRecoilState(counterState);
setCount((prev) => prev + 1); // 상태 업데이트
useResetRecoilState:
const resetCount = useResetRecoilState(counterState);
resetCount(); // 초기값으로 리셋
Recoil의 상태 관리 메서드(useRecoilState, useRecoilValue, useSetRecoilState)는 React Hook으로 제공됩니다.
React Hook은 다음과 같은 이유로 class 내부에서 사용할 수 없습니다: