• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

dispatch router질문입니다

20.05.01 00:23 작성 조회수 85

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로 보내지 않는 쪽으로 하시면 되겠습니다.