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

jfmam님의 프로필 이미지
jfmam

작성한 질문수

React로 NodeBird SNS 만들기

6-3. getInitialProps로 서버 데이터 받기

dispatch router질문입니다

작성

·

116

0

a쪽 컴포넌트는   const codeConfirm=useCallback(async()=>{

  const codeDispatch=useCallback(async(resolve,reject)=>{
            return await new Promise((resolve,reject)=>{
            dispatch({
            type:CODE_REQUEST,
            data:code
            });
            resolve();
    }
            )
    },[code])   
     if(code===undefined){
            alert('코드를 입력해주세요');
            return;
        }
        await codeDispatch().then(()=>{
            if(codeInfo){
            router.push('/b');
        }
        })

    },[code])
이렇게 짜보았고 b쪽은
  useEffect(()=>{
        if(!codeInfo){
            console.log(codeInfo);
            alert('잘못 된 코드를 입력하였습니다');
            router.push({pathname:'/a'});
        }
    },[codeInfo])
이런식으로 짜보았는데
b로 넘어갔다가 a로 다시넘어가는 현상이있습니다

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네네 b로 넘어갈 때 아직 REQUEST 중이라 데이터가 없어서 a로 다시 넘어가는 것 같습니다. REQUEST할 때 loading이라는 state를 만들어서 b에서 아직 loading state가 true라면 a로 보내지 않는 쪽으로 하시면 되겠습니다.

jfmam님의 프로필 이미지
jfmam

작성한 질문수

질문하기