Redux 미들웨어 사용 이유

nemo·2022년 6월 12일
0

React

목록 보기
21/28

Redux의 Store 안에 있는 Reducer 함수는 순수함수로, 같은 입력에 대해 항상 같은 결괏값을 출력해야 한다.

그러나 일부 로직은 출력할 때마다 다른 결괏값을 내뱉는다. 예를 들어 비동기 API 호출이나, new Date()로 실시간 날짜 출력, 랜덤 숫자 출력 등의 작업이 있다.

이런 순수하지 않은 작업의 경우 리듀서 함수로 처리할 수 없다. 이 때 미들웨어를 사용해 리듀서의 바깥에서 해당 로직을 처리해준다.

미들웨어를 사용함으로써 Store에서 상태를 변경하기 전에 특정 작업(순수하지 않은 작업)을 처리할 수 있게 되는 것이다.

redux-thunk

Thunk란 특정 작업을 나중에 할 수 있도록 함수 형태로 감싸는 것을 의미한다.

redux는 기본적으로 action creator가 내뱉는 객체 형태의 액션만 디스패치할 수 있다. 하지만 redux-thunk를 사용하면 함수 형태의 액션도 디스패치할 수 있게 된다.
이 방식을 활용하여 Redux에서 비동기적인 프로그래밍을 구현할 수 있게 되는 것이다.

redux-saga

redux-saga도 비동기 작업을 처리할 수 있게 해주는 미들웨어이다.
redux-thunk보다 더 다양한 기능을 수행할 수 있다. saga는 제너레이터 함수를 사용하기 때문에 함수의 실행을 원하는 곳에서 멈추거나 원하는 시점으로 돌아가게 할 수 있다.

0개의 댓글