• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 flushSync로 state를 변경하려는데 문제가 생겼습니다.

flushSync로 state를 변경하려는데 문제가 생겼습니다.

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #75199
      const onSubmit = async e => {
        e.preventDefault();
        try {
          await login(id, password);
          await getMyInfo();
          dispatch(setModalDefault());
          dispatch(setLoginTryCount(0));
        } catch (error) {
          if (error.response.status >= 400 && error.response.status < 500) {
    ★★★★★★★★★★★★★★★★★★★★
            flushSync(() => {
              set로그인피드백(false);
            });
            flushSync(() => {
              set로그인피드백(true);
            });
    ★★★★★★★★★★★★★★★★★★★★
            setErrorMsg(error.response.data.message);
            dispatch(setLoginTryCount(loginTryCount + 1));
            if (loginTryCount > reCaptchaShowCount) {
              window.grecaptcha.reset();
            }
            setCaptchaChecked(false);
          } else if (error.response.status >= 500) {
            setErrorMsg('서버 오류입니다. 관리자에게 문의하십시오.');
          }
        }
      };
    
    <small className={`login-error ${로그인피드백 ? 'login-error-feedback' : ''}`}>{errorMsg}</small>
    
    로그인에 실패하게 되면 로그인피드백이 false에서 true로 바뀌면서
    <small> 태그에 붙은 'login-error-feedback'가 뗐다가 다시 붙여지게 하고 싶었습니다.
    선생님한테 배운대로 아래 코드처럼 setTimeout으로 동기(?)처리를 하면 작동은 잘됩니다.
    
        set로그인피드백(false);
        setTimeout(() => {
          set로그인피드백(true);
        });
    
    그치만 강의 끄트머리에 있었던 flushsync라는 기능이 생각나 써먹으려고 해봤는데 작동이 잘 안되는군요.
    혹시 놓친게 있을까요?
    
    
    
    
    #75217

    codingapple
    키 마스터
    둘 중에 하나만 flushSync 써봅시다
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠