React

[React] Ep3. Recoil Hook

모리스🙂 2025. 4. 8. 15:32

안녕하세요. 모리스입니다.😄

이번 포스트에서는 이전 포스트에서 언급했던 Recoil Hook에 대해서 작성해 보려합니다.

📒 useRecoilState()

주어진 Recoil 상태의 과 그 상태를 업데이트하는 함수를 [value, setter] 형태의 튜플로 반환해요.
이 Hook은 해당 상태를 컴포넌트가 구독하도록 만들기 때문에, 상태가 바뀌면 자동으로 리렌더링이 돼요.

function useRecoilState<T>(state: RecoilState<T>): [T, SetterOrUpdater<T>];

type SetterOrUpdater<T> = (value: T | ((prev: T) => T)) => void;
  • state: atom 또는 쓰기 가능한 selector

이 Hook은 React의 useState()와 사용법이 거의 같아요. 차이점은 Recoil 상태를 사용한다는 점뿐이에요.


📒 useRecoilValue()

주어진 Recoil 상태의 값만 반환하는 Hook이에요.
컴포넌트를 해당 상태에 구독시키며, 상태가 업데이트되면 리렌더링이 발생해요.

function useRecoilValue<T>(state: RecoilValue<T>): T;
  • state: atom 또는 selector

상태를 읽기 전용으로만 사용하고 싶을 때 이 Hook을 사용하면 좋아요.
상태가 비동기라면 Promise가 resolve되기 전까지 Suspense 처리나 에러가 발생할 수 있어요.


📒 useSetRecoilState()

Recoil 상태를 업데이트할 수 있는 setter 함수만 반환하는 Hook이에요.
상태를 직접 읽지 않고 쓰기만 할 때 사용해요.

function useSetRecoilState<T>(state: RecoilState<T>): SetterOrUpdater<T>;

type SetterOrUpdater<T> = (value: T | ((prev: T) => T)) => void;
  • state: 쓰기 가능한 atom 또는 selector

useRecoilState()를 쓰면 상태 변화에 따라 컴포넌트가 리렌더링 되지만,
useSetRecoilState()는 setter만 가져오므로 리렌더링이 발생하지 않아요.


📒 useResetRecoilState()

지정된 상태를 초기값으로 리셋할 수 있는 함수를 반환해요.
이 Hook 역시 컴포넌트를 상태에 구독하지 않아요.

function useResetRecoilState<T>(state: RecoilState<T>): () => void;
  • state: 쓰기 가능한 atom 또는 selector

예를 들어, 로그아웃 시 사용자 상태를 초기화하거나, 필터나 폼 상태를 리셋할 때 유용하게 사용할 수 있어요.


📒 인용 출처

 

useRecoilState(state) | Recoil

첫 요소가 상태의 값이며, 두번째 요소가 호출되었을 때 주어진 값을 업데이트하는 setter 함수인 튜플을 리턴합니다.

recoiljs.org

 

 

useRecoilValue(state) | Recoil

주어진 Recoil 상태의 값을 리턴합니다.

recoiljs.org

 

 

useSetRecoilState(state) | Recoil

쓰기 가능한 Recoil 상태의 값을 업데이트하기 위한 setter 함수를 리턴합니다.

recoiljs.org

 

 

useResetRecoilState(state) | Recoil

주어진 상태를 default 값으로 리셋하는 함수를 반환합니다.

recoiljs.org

 


잘 못되었거나 수정할 부분이 있다면 언제든 댓글로 혼내주시길 바랍니다.!!

오늘도 긴 글 읽어주셔서 감사합니다.😊

'React' 카테고리의 다른 글

[React] Ep2. Recoil API  (0) 2025.04.08
[React] Ep1. Recoil 시작하기  (1) 2025.04.08
[React] Ep2. Hook API  (0) 2025.04.07
[React] Ep1. Hook API  (2) 2025.04.07