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 한다.
유의해야할거 같다. 다르다 . 묘하게 헷갈린다.