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

yjkwon9073님의 프로필 이미지
yjkwon9073

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

회원가입 구현하기

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

작성

·

2.9K

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
질문자

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 븥이시면 됩니다.

yjkwon9073님의 프로필 이미지
yjkwon9073

작성한 질문수

질문하기