🧠 Recoil이란?

정의

Recoil은 React 애플리케이션에서 전역 상태를 관리하기 위한 상태 관리 라이브러리다.

컴포넌트 간 상태 공유를 쉽게 하고, 상태를 atom 단위로 나눠 관리할 수 있다.

🧩 주요 특징

  • 전역 상태를 비교적 간단하게 다룰 수 있다.
  • atomselector로 상태를 선언적으로 관리한다.
  • React 컴포넌트와 자연스럽게 연결된다.
  • 파생 상태나 비동기 상태를 다루기 좋다.

🛠️ 기본 구성

Atom

  • 상태를 저장하는 기본 단위다.
  • 여러 컴포넌트에서 공유할 수 있다.
import { atom } from "recoil";

export const countState = atom({
  key: "countState",
  default: 0,
});

Selector

  • atom 값을 가공한 파생 상태를 만들 때 사용한다.
  • 계산 결과나 읽기 전용 상태를 만들기 좋다.
import { selector } from "recoil";
import { countState } from "./atoms";

export const doubleCountState = selector({
  key: "doubleCountState",
  get: ({ get }) => get(countState) * 2,
});

RecoilRoot

  • Recoil 상태를 사용하려면 애플리케이션 상단에 RecoilRoot를 감싼다.
import { RecoilRoot } from "recoil";

function App() {
  return (
    <RecoilRoot>
      <Counter />
    </RecoilRoot>
  );
}

🧪 상태 사용 예시

import { useRecoilState, useRecoilValue } from "recoil";
import { countState, doubleCountState } from "./atoms";

function Counter() {
  const [count, setCount] = useRecoilState(countState);
  const doubleCount = useRecoilValue(doubleCountState);

  return (
    <div>
      <p>Count: {count}</p>
      <p>Double Count: {doubleCount}</p>
      <button onClick={() => setCount(count + 1)}>+</button>
    </div>
  );
}

⚖️ Recoil과 Redux

항목 Recoil Redux
설정 비교적 간단하다 구조가 더 크다
상태 단위 atom 중심 store, reducer 중심
파생 상태 selector로 다루기 쉽다 별도 패턴이 필요하다
학습 곡선 비교적 낮다 상대적으로 높다

장점과 단점

장점

  • 상태 선언이 간단하다.
  • 컴포넌트와 잘 맞는다.
  • 파생 상태를 관리하기 쉽다.

단점

  • 규모가 커지면 설계를 잘 잡아야 한다.
  • Redux보다 생태계가 작다.
  • 상태 흐름이 복잡해지면 구조가 흐려질 수 있다.

📌 정리

  • Recoil은 React 전역 상태 관리를 간단하게 해주는 라이브러리다.
  • atom, selector, RecoilRoot를 먼저 이해하면 된다.
  • useState, useEffect, Props와 함께 비교해 보면 상태 흐름이 잘 보인다.

연결문서

댓글남기기