redux vs react-query

    

 `react-query`와 `redux`는 React 애플리케이션에서 데이터를 관리하는 데 사용되는 라이브러리이지만, 주요 사용 목적과 핵심 기능이 다릅니다. 이 둘의 차이점을 이해하면 왜 많은 개발자들이 서버 데이터를 관리하기 위해 `redux` 대신 `react-query`를 선택하는지 이해할 수 있습니다.


### Redux


- **전역 상태 관리**: Redux는 애플리케이션의 전역 상태를 관리하는 데 사용됩니다. 그것은 중앙 집중식 저장소에서 애플리케이션의 모든 상태를 관리하도록 설계되었습니다.

- **명시적**: Redux는 상태 변화를 위해 액션과 리듀서를 사용하며, 상태 변화 과정이 명시적입니다.

- **미들웨어**: 다양한 미들웨어를 통해 비동기 작업, 로깅, 디버깅 등을 지원합니다.

- **캐싱 및 데이터 동기화 미포함**: Redux 자체는 API 콜의 캐싱이나 데이터 동기화 기능을 제공하지 않습니다. 이러한 기능을 구현하기 위해서는 추가적인 미들웨어나 라이브러리가 필요합니다.


### React-Query


- **서버 상태 관리**: React-Query는 서버 데이터를 가져오기, 캐싱, 동기화, 백그라운드 리프레시와 같은 작업을 자동화하는데 중점을 둡니다.

- **자동 캐싱**: 데이터를 자동으로 메모리에 캐싱하고, 시간이 지나면 캐시를 무효화합니다.

- **백그라운드 동기화**: 애플리케이션이 포커스될 때 자동으로 데이터를 최신 상태로 동기화할 수 있습니다.

- **별도의 상태 관리 필요 없음**: 상태를 관리하는 별도의 구조나 로직 없이 API 결과를 직접 사용할 수 있습니다.


### 그래서 Redux 대신 React-Query를 사용하는 이유는?


1. **간소화된 데이터 페칭 로직**: Redux에서 API를 호출하고 데이터를 저장하려면 여러 액션, 리듀서, 그리고 종종 미들웨어 (예: redux-thunk, redux-saga)가 필요합니다. 반면, React-Query는 이러한 프로세스를 대폭 단순화합니다.

2. **내장된 캐싱 및 동기화**: React-Query는 데이터 캐싱 및 백그라운드 동기화와 같은 복잡한 기능을 자동으로 처리합니다.

3. **서버 상태와 클라이언트 상태의 분리**: React-Query를 사용하면 서버 데이터와 클라이언트 상태를 자연스럽게 분리할 수 있습니다.


결론적으로, 많은 개발자들이 서버 데이터의 캐싱, 동기화, 데이터 페칭 등의 복잡한 로직을 간소화하고 효율적으로 관리하기 위해 `redux` 대신 `react-query`를 선택하게 되었습니다. 그렇지만 전역 상태 관리나 애플리케이션 내부의 상태 관리에는 여전히 Redux가 적합할 수 있습니다.



https://tech.kakaopay.com/post/react-query-1/


댓글

이 블로그의 인기 게시물

js 스트링에서 요소 갯수 세기

STUDY

javascript cheatsheet