인프런 커뮤니티 질문&답변

jwoo27님의 프로필 이미지
jwoo27

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

redux thunk 관련 질문있습니다.

해결된 질문

작성

·

172

·

수정됨

0

안녕하세요! 항상 좋은 강의 만들어주셔서 감사합니다ㅎㅎㅎ 이번에 새로 업데이트 된 강의를 들으면서 redux 강의 부분을 듣고 있다 이전 john ahn님의 로그인 강의 예제에서 질문이 생겼습니다.

john ahn님의 로그인 강의에서

export function loginUser(dataToSubmit) {
    const request = axios.post('/api/users/login', dataToSubmit)
    .then(response => response.data)

    return {
        type: LOGIN_USER,
        payload: request
    }
}

이런식으로 로그인을 한 적이 있습니다! 이 때는 이 방법이 redux-thunk를 사용한 방법인 줄 알았는데, 강의를 들어보니 이것은 redux-thunk를 이용하지 않은 방법이라는 것을 알게되었습니다. 근데, axios를 사용해서 비동기로 처리했는데도 제 기억에 login 강의는 잘 동작했었습니다.

왜 잘 동작했는지 chat GPT를 통해 질문하니 답변으로 이것은 잘 동작하지 않는 코드이고 "이 코드에서 axios.post는 비동기 함수이고, .then(response => response.data)를 통해 HTTP 요청의 결과를 처리하고 있습니다. request 변수는 이제 비동기 요청이 성공적으로 완료되었을 때 응답 데이터를 갖게 됩니다. 그러나 여전히 request는 프로미스입니다. 프로미스는 비동기 작업이 완료될 때까지 "미래의 값"을 나타내는 객체입니다." 이런 답변을 해주었습니다. 제가 생각해도 이것이 맞는 말 같은데 redux-thunk를 사용하지 않아도 왜 잘 동작한걸까요?? 굳이 redux-thunk를 사용하지 않아도 돼는 건가요?? 아니면 이번이 특별한 경우인가요??

 

답변 2

1

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요 jwoo27님

redux에서 비동기 호출은 thunk 없이도 가능합니다 ~

하지만 thunk를 사용하는 이유는 thunk를 이용하면 함수 자체에서 dispatch와 이전의 store에 있는 state를 이용할 수 있게 됩니다. (store.dispatch, store.getState)

이것들을 이용할 수 있다는 말은

하나의 파일에 action 함수들을 몰아서 생성할 수 있게 됩니다.

그래서 redux thunk는 함수들을 중앙집중화해서 사용할 수 있게 하는 장점이 있는 것이며

thunk를 이용해야만 비동기 요청을 할 수 있는 것은 아닙니다 ~

감사합니다.

jwoo27님의 프로필 이미지
jwoo27
질문자

아 그렇군요! 감사합니다ㅎㅎ 새해 복 많이 받으세요😄

0

안녕하세요, 인프런 AI 인턴입니다.

redux-thunk와 관련하여 비동기 처리가 포함된 액션 생성자 함수에 대해 질문해주셨네요. 강의에서 사용된 코드가 비록 redux-thunk를 사용하지 않았음에도 불구하고 잘 동작했다는 부분에 대한 답변이 필요하신 것 같습니다. 이와 유사한 질문으로 이전에 John Ahn 강사님께서 답변하신 내용이 있어 연결해드리겠습니다. 해당 답변에서는 dispatch 함수 이후에 .then 구문을 사용하는 부분에 대한 설명이 있으며, 비동기 처리와 액션 객체 반환에 대한 내용이 담겨있습니다.

아래의 질문을 참고해주시면 도움이 될 것 같습니다:

강사님의 답변을 요약하자면, dispatch 함수에서 반환된 then으로 오는 값은 loginUser의 return 값이며, reducer의 case 문에서 오는 return 값은 Redux 스토어로 들어간다고 설명하고 있습니다. 이를 통해 강의에서 제시된 코드가 어떻게 비동기 처리를 수행하는지와 그 처리 결과가 어떻게 Redux 스토어에 반영되는지에 대해 이해할 수 있습니다.

링크를 통해 강사님의 더 자세한 설명을 확인하실 수 있으니, 참고하셔서 궁금증을 해결하시길 바랍니다.

jwoo27님의 프로필 이미지
jwoo27
질문자

답변감사합니다! 하지만 제 질문은 결국 request는 프로미스인데, redux-thunk를 사용하지 않았는데도 왜 잘 동작했는지인거 같습니다!

jwoo27님의 프로필 이미지
jwoo27

작성한 질문수

질문하기