Code&Data Insights
[React] 리액트의 상태관리 - Flux 패턴, Redux, context API 본문
Web Development/Front-end
[React] 리액트의 상태관리 - Flux 패턴, Redux, context API
paka_corn 2024. 4. 28. 19:57Flux 패턴 & 단방향 데이터 흐름
: 리액트는 단방향 데이터 흐름(Action → Dispatch → Reducer → Store)을 기반으로 하는 Flux 패턴을 사용
- Action: 상태 변경을 트리거하는 객체
- Dispatch: Action 객체를 Store에 전달하는 함수
- Reducer: Action에 따라 상태를 업데이트하는 함수
- Store: 애플리케이션의 전역 상태를 관리하는 객체
- View: Dispatch된 Action을 통해 상태를 변경하고, 상태가 변경되면 UI가 자동으로 업데이트됨
Redux
: Flux 패턴을 구현한 라이브러리로, 애플리케이션의 상태를 단방향 데이터 흐름으로 관리
[장점]
- 컴포넌트끼리 상태를 공유할 때 여러 컴포넌트를 거치지 않고 전달할 수 있어 효율적
- 상태 변경이 예측 가능하고 추적 가능
[단점]
- 상태가 변경될 때마다 Store와 연결된 모든 컴포넌트가 다시 렌더링되는 경향
- 상태가 많아질수록 관리가 복잡해지고 최적화가 상대적으로 어려워짐
Context API
: 컴포넌트 계층 구조를 따라 상태를 전달하는 방법
- 상태를 계층적으로 전파, Context를 통해 하위 컴포넌트로 전달함
[장점]
- 단일 context를 사용하여 특정한 데이터를 전파하고, 해당 context를 사용하는 컴포넌트들만 렌더링
- 불필요한 상태 업데이트나 재렌더링을 최소화할 수 있으며, 특정 context만 갱신하기 때문에 최적화가 상대적으로 용이
[단점]
- 상태 변경 시 모든 하위 컴포넌트를 다시 렌더링함
=> 대규모 애플리케이션에서 성능 문제가 발생할 수 있음
=> useMemo와 useCallback 사용을 통한 불필요한 렌더링을 방지하는 최적화가 중요!!
reference
'Web Development > Front-end' 카테고리의 다른 글
[React] 상태관리 라이브러리 - Redux | Zustand | Recoil | Jotai (0) | 2024.05.19 |
---|---|
[JavaScript] 비동기 프로그래밍 - Callback 함수, Async/Await, Promise (0) | 2024.04.29 |
[React] 리액트 상태관리 - 상태 관리 범위와 도구 (0) | 2024.04.27 |
[React] React란? React의 특징 (0) | 2024.04.23 |
[JavaScript] ECMAScript 5 & ES6 (0) | 2024.04.22 |
Comments