웹/프론트엔드
React로 상태 관리하기: Context API와 useState 비교
컴언어하수
2024. 7. 11. 00:00
728x90
React Context API와 useState
훅은 각각 다른 용도로 사용된다. useState
는 컴포넌트 내부의 로컬 상태를 관리하는 데 사용되며, Context API
는 여러 컴포넌트에서 전역적으로 공유되는 상태를 관리하는 데 사용된다. TypeScript를 사용하여 두 방법을 비교하며 예제를 통해 설명한다.
useState와 Context API 비교
useState 훅
useState
는 개별 컴포넌트 내부의 상태를 관리한다. 상태와 상태를 업데이트하는 함수를 반환한다.
예제: useState
import React, { useState } from 'react';
const Counter: React.FC = () => {
const [count, setCount] = useState<number>(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
};
export default Counter;
이 예제에서 useState
훅을 사용하여 count
라는 로컬 상태를 관리한다. Counter
컴포넌트 내부에서만 상태를 사용할 수 있다.
Context API
Context API는 여러 컴포넌트에서 전역적으로 상태를 공유할 수 있게 해준다. 이를 위해 Context를 생성하고, Provider를 통해 상태를 전달하며, Consumer를 통해 상태를 소비한다.
예제: Context API
1. Context 생성 및 Provider 설정
import React, { createContext, useState, ReactNode } from 'react';
interface CountContextProps {
count: number;
setCount: React.Dispatch<React.SetStateAction<number>>;
}
export const CountContext = createContext<CountContextProps | undefined>(undefined);
const CountProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
const [count, setCount] = useState<number>(0);
return (
<CountContext.Provider value={{ count, setCount }}>
{children}
</CountContext.Provider>
);
};
export default CountProvider;
2. Context 소비
import React, { useContext } from 'react';
import { CountContext } from './CountProvider';
const Counter: React.FC = () => {
const context = useContext(CountContext);
if (!context) {
throw new Error('Counter must be used within a CountProvider');
}
const { count, setCount } = context;
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
};
export default Counter;
3. Provider로 감싸기
import React from 'react';
import ReactDOM from 'react-dom';
import Counter from './Counter';
import CountProvider from './CountProvider';
const App: React.FC = () => {
return (
<CountProvider>
<Counter />
{/* 다른 컴포넌트도 CountProvider의 상태를 공유할 수 있다 */}
</CountProvider>
);
};
ReactDOM.render(<App />, document.getElementById('root'));
비교
useState
useState
는 로컬 상태를 관리한다.- 상태와 상태 업데이트 함수를 반환한다.
- 개별 컴포넌트 내부에서만 상태를 사용할 수 있다.
Context API
- Context API는 여러 컴포넌트에서 전역적으로 상태를 공유할 수 있게 해준다.
- Context를 생성하고 Provider를 통해 상태를 전달하며 Consumer를 통해 상태를 소비한다.
- 전역 상태 관리가 필요할 때 유용하다. 예를 들어, 사용자 인증 상태, 테마 설정, 글로벌 알림 등.
Context API는 상태가 여러 컴포넌트에서 필요할 때 유용하다. 반면에 useState
는 개별 컴포넌트 내부에서 간단한 상태를 관리할 때 적합하다. 이 두 방법을 적절히 사용하면 더욱 효율적으로 React 애플리케이션을 개발할 수 있다.
반응형