inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전 리액트 프로그래밍

redux-saga를 이용한 비동기 액션 처리1

리덕스 사가의 필요성

423

으하핳

작성한 질문수 34

1

export async function addToCart (id) {
const body = {id};
const request =await Axios.post(`${USER_SERVER}/addToCart`,body)
.then(response=>response.data);
return {
type :ADD_TO_CART,
payload :request
}
}
안녕하세요 강사님!
위의 코드처럼 actions.js에서 서버와 통신을 하면
비동기 통신이 끝난다고 생각이 드는데요.
이 결과를 redux에 넘겨서 새로운 state를 반환하면
redux-saga나 redux-thunk가 필요없는 게 아닐까 하는
궁금증이 생겼습니다.
이런 방식이 saga를 쓰는 것에 비해 단점이 있어서 안 쓰는건지,
아니면 action객체는 비동기 통신을 해서는 안되서 saga를 사용하는 건지가
궁금합니다.
항상 가려운 부분을 시원히 긁어주셔서 감사합니다.

react redux

답변 1

1

이재승

안녕하세요
말씀하신대로 이 방식으로 API 응답값을 리덕스에 저장할 수 있습니다
다만 API 호출 status(isFetching 등)를 관리하기는 힘들어보입니다

API status 를 위한 별도 액션 생성자 함수를 만들 수도 있긴합니다
그렇게하면 사용하는 쪽에서 여러 액션을 호출해야되서 불편할 것 같네요
사용하는 쪽에서 편하게 하기 위해 utility 함수를 만들 수도 있습니다
그렇게 하다보면 결국 리덕스 사가가 지원해주는 여러 기능을 직접 구현해야 될거에요

제가 언급한 API status 관리 외에도 리덕스 사가는 많은 장점을 갖고 있습니다 (물론 단점도 있구요)
예를 들어, fetchProduct 라는 액션이 짧은 시간에 두 번 발생했을 때,
둘 다 처리할지 또는 하나는 무시하고 다른 하나만 처리할지를 리덕스 사가에서는 쉽게 구현할 수 있습니다

라이브러리를 비판적인 시각으로 보는 것은 개발 공부를 하는데 많은 도움이 되는 것 같아요 👍

자동완성기능이 안되네요 ..

0

499

3

화면에 에러가나네요 ...

0

516

2

setValue 함수 질문 있습니다.

0

840

1

찾아야한다 실습 문의

0

469

1

훅 기초 익히기 - 배치 처리와 순차적 처리의 차이

0

470

1

cra, next.js 관련 질문 드립니다!

0

606

1

useState 배열 비구조화 문법 질문!

0

252

1

Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'

1

1081

2

Saga 오류 이거 혹시 왜이런지 알수 있을까요?

0

371

2

http://localhost:3001/user/search?keyword=u 이걸로 데이터를 보는데 저는 사이트에 연결할 수 없다고 나오네요

0

657

1

match

1

495

1

버튼이 생성되지 않습니다 .

0

288

1

혹시 import 옆에 파일 사이즈 표시 어떻게 하나요?

0

262

1

saga 문제

0

248

1

에러가 발생하는데 이유가뭘까요..?

0

388

2

선생님과 똑같이 했는데 다 rendering 됩니다.

0

203

1

컴포넌트와 컨테이너의 기준

0

316

1

커스텀훅의 개념과 함수차이

1

1198

1

useEffect 실전 활용법(1) 강의에서 질문있습니다.

0

338

1

리덕스, 사가파일들의 관리

0

207

1

useImperativeHandle 질문 입니다.

0

281

1

컴파일 문의드립니다.

0

203

1

React.memo 관련 질문이 있습니다.

0

373

1

Context API vs Redux 사용 빈도

0

213

1