작성
·
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
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일 때 나옵니다.