hook 사용에는 중요한 규칙이 있으며 이 규칙은 React에서 hook을 사용할 때 지켜야 하는 규칙입니다.
첫 번째는 React hook은 React 컴포넌트 함수나 사용자 정의 hook에서 호출해야 합니다.
두 번째는 React hook은 React 컴포넌트 함수나 사용자 정의 hook 함수의 최상위 수준에서만 호출해야 합니다.
이는 중첩 함수에서 hook을 호출하면 안 된다는 뜻으로 예를 들어 useEffect의 인자로 주어지는 함수 안에서 hook을 사용하는 것은 불가능합니다.
(if문 안에서 사용하는 것도 불가능합니다.)
세 번째는 useEffect의 경우 참조하는 의존성 배열을 useEffect 내부에 추가해야 합니다.
useEffect(() => {
const identifer = setTimeout(() => {
console.log("유효성 검사 중 입니다.");
setFormIsValid(emailIsValid && passwdIsValid);
}, 300);
return () => {
console.log("클린업 작업!");
clearTimeout(identifer);
};
}, [emailIsValid, passwdIsValid]);
위의 예시 코드에서 return 윗부분을 보시면 setFormIsValid(emailIsValid && passwdIsValid); 을 확인할 수 있습니다.
다른 State인 emailIsValid와 passwdIsValid을 사용하고 있습니다.
이 경우 의존성 배열 안에는 emailIsValid, passwdIsValid 가 들어가야 합니다.
(State 업데이트 함수의 경우는 React에 의해 변경되지 않도록 보장되기 때문에 의존성 배열에 추가하지 않아도 됩니다.)
'React' 카테고리의 다른 글
Memoization(React.memo, useMemo, useCallback) (2) | 2022.10.11 |
---|---|
useContext (0) | 2022.10.09 |
useEffect 1 (로그인 / 로그아웃) (0) | 2022.10.03 |
React Portal 사용법 (0) | 2022.10.03 |
불 필요한 <div> 제거하기 (Fragment) (0) | 2022.10.03 |