useEffect(() => {
setTimeout(() => {
console.log("Validity::::!!!");
setFormIsValid(
enteredEmail.includes("@") && enteredPassword.trim().length > 6
);
}, 500);
return () => {
console.log("Cleanup::::!!!");
};
}, [enteredEmail, enteredPassword]);
하지만 실행해보면
cleanup은 뜨지 않는다 . => useEffect함수가 최초 실행되지 않았기 때문에 (첫번째 사이드 이펙트가 실행되기 전에 작동하지 않는다. )
그래서 한글자라도 입력하게 되면 ???!!
⇒ 이렇게 정상적으로 작동하게 된다.
useEffect(() => {
const identifier = setTimeout(() => {
console.log("Validity::::!!!");
setFormIsValid(
enteredEmail.includes("@") && enteredPassword.trim().length > 6
);
}, 500);
return () => {
console.log("Cleanup::::!!!");
clearTimeout(identifier);
};
}, [enteredEmail, enteredPassword]);
setFormIsValid(
enteredEmail.includes("@") && enteredPassword.trim().length > 6
);
}, 500);
이 코드는 한번만 실행된다는 의미 (모든 키스트로크마다)