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

ㅇㅇ님의 프로필 이미지
ㅇㅇ

작성한 질문수

React로 NodeBird SNS 만들기

1-7. 회원가입 state와 custom hook

질문있습니다.

작성

·

118

0

const [term, setTerm] = useState(false);



const onSubmit = useCallback((e) => {

    e.preventDefault();

    if (password !== passwordCheck) {

      return setPasswordError(true);

    }

    if (!term) {

      return setTermError(true);

    }

  }, [password, passwordCheck, term]);



{termError && <div style={{ color: 'red' }}>약관에 동의하셔야 합니다.</div>}

강의에 있는 코드에서 필요한 부분만 뽑아 봤습니다.

먼저 맨마지막 코드는 termError가 true일 때 화면에 표시되는 코드잖아요.

그래서 체크박스에 체크를 안하면 경고문이 뜨게하는거고요.

term은 초기값이 false이고요.

onSubmit에서 !term이면 !term의 값은 true인거고..

그러면 term이 true일 때 setTermError가 true가 된다는 뜻인거고...

경고문은 term이 false일 때(체크박스에 체크를 안 한 상태) 나와야되는데 !term은 true인거잖아요.

그런데 체크박스를 체크 안 한 상태(false)에서 제출을 하면 정상적으로 경고문이 뜨는데 이해가 안가서 질문드립니다.

답변 3

1

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

!term이 현재 체크되지 않은 상태를 의미하는 겁니다.

term이 체크된 상태고요

0

ㅇㅇ님의 프로필 이미지
ㅇㅇ
질문자

아직 완전히 이해가 안되네요....

그러니까 체크를 안한 상태. 즉, term이 false일 때 termError가 true가 되면서 경고문이 뜨는거야 되는데

!term은 true인데 왜 if조건문에서 !term일 때 setTermError(true)를 리턴하는건지가 궁금합니다.

위의 if조건문에서 !term이 true라는 것은 체크박스에 체크를 한 상태에서 termError를 true로 바꾸겠다는 것으로 저는 해석이 돼서요...

0

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

그러면 term이 true일 때 setTermError가 true가 된다는 뜻인거고...

이 부분이 잘못되었습니다.

term이 false일 때 !term이 true라서 setTermError가 true가 됩니다.

경고문은 termError가 true일 때 나옵니다.

ㅇㅇ님의 프로필 이미지
ㅇㅇ

작성한 질문수

질문하기