[TIL]Redux thunk와 saga차이점 /Dispatch Error,useSelector Error Type에러

라형선·2023년 4월 10일
0

Redux Thunk와 Redux Saga는 모두 Redux 미들웨어로서, Redux 애플리케이션에서 비동기 작업을 처리하는 데 사용됩니다. 하지만 두 라이브러리 간에는 다음과 같은 차이점이 있습니다.

제어 흐름

Redux Thunk는 비동기 작업을 처리하는 동안 액션 생성자 함수를 중심으로 제어 흐름이 이루어집니다. 이에 비해 Redux Saga는 제너레이터 함수를 사용하여 작업의 제어 흐름을 명시적으로 제어합니다. 따라서 Redux Saga를 사용하면 코드의 가독성이 높아지고, 비동기 작업의 복잡도가 높아져도 코드를 유지보수하기 쉬워집니다.

작업 취소

Redux Thunk는 작업이 진행 중인 상태에서 다른 작업으로 전환할 수 없습니다. 이에 비해 Redux Saga는 take, takeEvery, takeLatest와 같은 Effect를 사용하여 작업을 취소하고, 새로운 작업으로 전환할 수 있습니다. 이를 통해 Redux Saga는 취소 가능한 작업을 처리하기에 용이합니다.

테스트 용이성

Redux Thunk는 테스트하기 어려울 수 있습니다. 특히 비동기 작업을 처리하는 액션 생성자 함수는 액션 생성자 함수 자체를 모의(mock)하기 어려울 수 있습니다. 이에 비해 Redux Saga는 Generator 함수로 비동기 작업을 처리하므로, 테스트하기 쉽습니다.

사용법

Redux Thunk는 함수를 리턴하는 형태로 사용됩니다. 이에 비해 Redux Saga는 Effect를 반환하는 형태로 사용됩니다. 이러한 차이점 때문에 Redux Saga를 사용하려면 Effect의 종류와 사용법에 대한 이해가 필요합니다.

따라서 Redux Thunk는 간단한 비동기 작업을 처리할 때 사용하기 적합하고, Redux Saga는 복잡한 비동기 작업을 처리하고, 작업의 제어 흐름을 명확하게 제어할 때 사용하기 적합합니다.

Dispatch 타입에러

스택오버플로우


profile
형선

0개의 댓글