Error: redux-saga

darcyu83·2022년 2월 3일
0

Saga 적용 후 dispatch로 getMovies action creator를 전달하였다.

무한 로딩 로딩 로딩 ... 멈춤

왜?

이유는
1줄의 코드가 ...
redux thunk와 헷갈려서 ...

원인을 찾앗다... 내시간...

오류 코드

function* getMoviesSaga(action: Type_MovieAction) {
 yield put(getMoviesAct()); // 오류원인 ==> 삭제해야 함.
  try {
    const data: IMovie[] = yield call(getMoviesAPI);
    yield put(getMoviesActSuccess(data));
  } catch (error: any) {
    yield put(getMoviesActError(error));
  }
}
export function* moviesSaga() {
  yield takeLatest(GET_MOVIES, getMoviesSaga);
}

일단 결론 먼저
2번째 줄 yield put(getMoviesAct()); 이 오류를 유발햇다.

기본적으로
action은 3가지 타입으로 구성
호출 / 성공 or 실패

내가 이해한 바로는 saga가 동작하는 순서는
moviesSaga takeLatest() 에서 처음 호출 액션을 실행
그리고는 getMoviesSaga에서 api 함수를 호출해서 결과 성공 / 실패를 나눠서 다시 dispatch한다.

아래는 redux thunk 코드 햇갈린...

export function getUserProfileThunk(
  username: string
): ThunkAction<void, TRootReducer, null, TGithubAction> {
  return async (dispatch) => {
    dispatch(getProfile());
    try {
      const userProfile = await getUserProfileAPI(username);
      dispatch(getProfileSuccess(userProfile));
    } catch (error: any) {
      dispatch(getProfileError(error));
    }
  };
}

thunk는 액션 3가지 타입을 한개의 함수안에서 dispatch 한다.

유의해야할거 같다. 다르다 . 묘하게 헷갈린다.

profile
Front-end Developer

0개의 댓글