728x90
Recoil의 기본 개념 (Atom과 Selector)
1. Atom: 상태의 최소 단위
Atom은 Recoil의 가장 작은 상태 저장소입니다. 애플리케이션의 상태가 필요한 부분에서 Atom을 생성하고 사용합니다. Atom에 저장된 값은 필요에 따라 여러 컴포넌트에서 사용할 수 있으며, Atom의 값이 업데이트되면 해당 값을 사용하는 모든 컴포넌트가 자동으로 다시 렌더링됩니다.
Atom의 특징
- React 컴포넌트에서 사용할 수 있는 상태를 나타냅니다.
- Atom에 저장된 값은 기본 상태를 나타내며, 여러 컴포넌트에서 공유될 수 있습니다.
예제: Atom 사용하여 간단한 카운터 만들기
- 먼저 atoms.js 파일을 생성하고, Atom을 정의합니다.
// src/atoms.js
import { atom } from 'recoil';
export const counterState = atom({
key: 'counterState',
default: 0,
});
- 이제 Atom을 사용하여 간단한 카운터 컴포넌트를 만듭니다.
// src/App.js import React from 'react'; import { useRecoilState } from 'recoil'; import { counterState } from './atoms'; function Counter() { const [count, setCount] = useRecoilState(counterState); return ( <div> <h1>Count: {count}</h1> <button onClick={() => setCount(count + 1)}>Increment</button> <button onClick={() => setCount(count - 1)}>Decrement</button> </div> ); } export default Counter;
2. Selector: 파생된 상태(derived state)
Selector는 Atom에 저장된 값을 기반으로 파생된 상태를 생성합니다. 즉, Atom의 상태를 바탕으로 특정 값을 계산하거나 변환하는 데 사용됩니다. Selector는 읽기 전용 또는 읽기/쓰기 가능할 수 있으며, 파생된 값을 다른 컴포넌트에서 사용할 수 있습니다.
Selector의 특징
- Atom을 기반으로 파생된 상태를 제공하며, 상태 간의 의존성을 쉽게 관리할 수 있습니다.
- 복잡한 계산이 필요한 경우 Selector를 사용하여 효율적으로 상태를 관리할 수 있습니다.
예제: Selector를 사용하여 계산된 값 반환
- 먼저 selectors.js 파일을 생성하여 Selector를 정의합니다.
// src/selectors.js import { selector } from 'recoil'; import { counterState } from './atoms'; export const doubleCounterState = selector({ key: 'doubleCounterState', get: ({ get }) => { const count = get(counterState); return count * 2; }, });
- 이제 Selector를 사용하여 두 배로 계산된 값을 반환하는 컴포넌트를 만듭니다.
// src/App.js import React from 'react'; import { useRecoilValue } from 'recoil'; import { counterState } from './atoms'; import { doubleCounterState } from './selectors'; function CounterWithDouble() { const count = useRecoilValue(counterState); const doubledCount = useRecoilValue(doubleCounterState); return ( <div> <h1>Count: {count}</h1> <h2>Double Count: {doubledCount}</h2> </div> ); } export default CounterWithDouble;
3. 실습: Atom과 Selector 사용
- Atom을 사용하여 상태(카운터)를 관리하고, Selector를 통해 그 상태를 기반으로 새로운 값을 계산하는 방식입니다.
- 카운터를 증가시키면 두 배로 계산된 값도 실시간으로 업데이트됩니다.
4. 요약
- Atom은 Recoil에서 상태의 최소 단위로, 여러 컴포넌트에서 공유될 수 있습니다.
- Selector는 Atom에 저장된 상태를 기반으로 파생된 상태를 계산하여 반환합니다.
- Atom과 Selector는 Recoil 상태 관리의 핵심 개념으로, 이를 통해 효율적인 상태 관리가 가능합니다.
728x90
'React > React에서 Recoil로 상태관리하기' 카테고리의 다른 글
Recoil을 사용한 React 상태 관리(5): 상태를 효율적으로 관리하기 (상태 분리 및 성능 최적화) (0) | 2024.10.14 |
---|---|
Recoil을 사용한 React 상태 관리(4): 비동기 데이터 처리 (Selector의 비동기 처리) (0) | 2024.10.14 |
Recoil을 사용한 React 상태 관리(3): RecoilRoot와 컴포넌트에서 상태 사용하기 (0) | 2024.10.14 |
Recoil을 사용한 React 상태 관리(1): Recoil 개요 및 설치 (2) | 2024.10.14 |
Recoil을 사용한 React 상태 관리 강좌(feat. React) (1) | 2024.10.14 |