728x90
"Jotai로 배우는 React 상태 관리: 최소화된 경량 상태 관리 솔루션"
1시간 분량 강의안 (Jotai 기초)
강의 목표
- Jotai의 개념과 필요성을 이해한다.
- Jotai의 주요 기능(Atoms, Selectors)을 학습한다.
- Jotai를 활용하여 React 애플리케이션에서 효율적으로 상태를 관리하는 방법을 익힌다.
강의 목차
1. Jotai란 무엇인가? (10분)
Jotai의 정의
- Jotai는 React를 위한 최소화된 상태 관리 라이브러리로, 상태를 단일 객체 대신 여러 Atom으로 분리하여 관리할 수 있습니다.
- "Jotai"는 일본어로 "원자(atom)"를 의미하며, Atomic 상태 관리를 목표로 합니다.
Jotai의 주요 특징
- 간결한 API: 상태 정의와 사용이 간단.
- Atomic 상태 관리: 필요한 상태만 구독하여 성능 최적화.
- React 친화적: React의 useState와 유사한 방식으로 상태 관리.
- 모듈화: 상태를 독립적으로 관리하고 재사용 가능.
Jotai의 주요 구성 요소
- Atom: 상태의 최소 단위.
- Derived Atom: 기존 Atom의 값을 기반으로 생성된 파생 상태.
2. Jotai 설치 및 기본 설정 (10분)
1단계: Jotai 설치
- Jotai 설치:
npm install jotai
2단계: 기본 Atom 생성
- 상태를 정의하는 Atom 작성:
import { atom } from 'jotai';
export const countAtom = atom(0); // 초기값 0
3. Jotai 주요 개념 및 구현 (20분)
1단계: Atom 사용
- React 컴포넌트에서 Atom의 상태를 가져와 사용:
import React from 'react';
import { useAtom } from 'jotai';
import { countAtom } from './atoms';
const Counter = () => {
const [count, setCount] = useAtom(countAtom);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
<button onClick={() => setCount(count - 1)}>Decrement</button>
</div>
);
};
export default Counter;
2단계: Derived Atom 생성
- 기존 Atom을 기반으로 파생 상태 생성:
import { atom } from 'jotai';
import { countAtom } from './atoms';
export const doubleCountAtom = atom((get) => get(countAtom) * 2);
3단계: Derived Atom 사용
- React 컴포넌트에서 Derived Atom 값 사용:
import React from 'react';
import { useAtom } from 'jotai';
import { doubleCountAtom } from './atoms';
const DoubleCounter = () => {
const [doubleCount] = useAtom(doubleCountAtom);
return <p>Double Count: {doubleCount}</p>;
};
export default DoubleCounter;
4단계: 비동기 Atom 생성
- 비동기 데이터를 관리하는 Atom:
import { atom } from 'jotai';
export const asyncDataAtom = atom(async () => {
const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
return response.json();
});
4. 고급 Jotai 기능 (10분)
1단계: Atom의 상태 조작
- Atom의 상태를 직접 설정하는 함수 작성:
const incrementAtom = atom(
(get) => get(countAtom),
(get, set) => set(countAtom, get(countAtom) + 1)
);
2단계: Atom Family
- 비슷한 역할을 가진 여러 Atom을 동적으로 생성:
import { atomFamily } from 'jotai/utils';
const itemAtomFamily = atomFamily((id) => atom({ id, value: 0 }));
3단계: Jotai Devtools
- 상태 디버깅을 위한 Devtools 설치:
npm install jotai-devtools
- 사용:
import { useAtomsDebugValue } from 'jotai-devtools';
function DebugComponent() {
useAtomsDebugValue();
return null;
}
5. 실습 과제 (10분)
실습 과제
- Jotai를 사용하여 카운터 애플리케이션을 구현하세요.
- Derived Atom을 사용하여 카운터 값을 두 배로 계산하여 화면에 표시하세요.
- 비동기 Atom을 생성하여 API 데이터를 화면에 표시하세요.
예제
- 비동기 데이터 컴포넌트:
import React from 'react';
import { useAtom } from 'jotai';
import { asyncDataAtom } from './atoms';
const AsyncData = () => {
const [data] = useAtom(asyncDataAtom);
if (!data) return <p>Loading...</p>;
return (
<div>
<h1>{data.title}</h1>
<p>{data.body}</p>
</div>
);
};
export default AsyncData;
6. Q&A 및 정리 (10분)
- Q&A:
- Jotai는 어떤 상황에서 적합한 상태 관리 도구인가요?
- Jotai와 Zustand의 차이점은 무엇인가요?
- 요약:
- Jotai는 최소화된 상태 관리 라이브러리로, 간단한 API를 통해 효율적으로 상태를 관리할 수 있습니다.
- Atom과 Derived Atom을 사용해 상태와 파생 데이터를 관리합니다.
- React와 자연스럽게 통합되며, 비동기 데이터를 쉽게 관리할 수 있습니다.
728x90
'React > React Core' 카테고리의 다른 글
18.Flux 아키텍처 완벽 이해: React 애플리케이션 상태 관리의 기초 (1) | 2024.12.09 |
---|---|
17.React Context API로 상태 관리하기: Props Drilling 없이 데이터 공유 (2) | 2024.12.09 |
15.React Query로 서버 상태 관리하기: 효율적인 데이터 페칭과 캐싱 (3) | 2024.12.02 |
14.Zustand로 배우는 경량 상태 관리: 간단하고 빠른 React 상태 관리 솔루션 (0) | 2024.12.02 |
13.Recoil로 배우는 React 상태 관리: 간단하고 강력한 최신 상태 관리 라이브러리 (0) | 2024.12.02 |