• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

dispatch를 사용하는 함수 안에 async await

21.04.07 10:15 작성 조회수 2.57k

0

회원가입을 요청하는 로직안에 성공과 실패에 따른 분기문을 한곳에 실행하고 싶은데 방법이 있나요?

(예시)

  const onSubmit = useCallback(async () => {
    try {
      const result = await dispatch({
        typeSIGN_UP_REQUEST,
        data: { emailpasswordnickname },
      });
      message
        .success("회원가입에 성공하셨습니다.")
        .then(() => Router.push("/").then());
    } catch (signupError) {
      message.error(JSON.stringify(signupErrornull4)).then();
    }
 }, []);

답변 3

·

답변을 작성해보세요.

1

2번을 의미합니다. takeLatest같은 건 또 따로 구현해주셔야 합니다.

0

yjkwon9073님의 프로필

yjkwon9073

질문자

2021.04.07

1. axios.post 후에 then cath 붙이 된다는것은 사가나 thunk에서 사용하는 로직안을 뜻하는건가요? 

2. 현 로직에 dispatch 대신 axios.post를 사용하면 된다는 뜻인가요?
=>  이렇게 사용하게 된다면 saga의 takelatest나 takeEvery같은 saga 헬퍼 기능은 쓰기 힘들어 지겠네요.

 const onSubmit = useCallback(async () => {
    try {
      const response = await axios.post("/user", { emailpasswordnickname });
      message.success("회원가입에 성공하셨습니다.").then(() => Router.push("/").then());
    } catch (signupError) {
      message.error(JSON.stringify(signupErrornull4)).then();
    }
 }, []);

0

dispatch를 하는순간 로직이 리덕스쪽으로 이동해서 어렵습니다.

그냥 여기서 axios.post 후에 then catch 븥이시면 됩니다.