본문 바로가기
Front-End/React

[React Hook] 4. Hook 규칙

by hongdor 2021. 2. 23.
728x90

출처 공식 문서 : Hook의 규칙 – React (reactjs.org)

 

 

1. 최상위 에서만 Hook을 호출해야 한다.

(1) 반복문, 조건문 혹은 중첩된 함수 내에서 Hook을 호출하면 안된다.
(2) Hook을 일반적인 자바스크립트 함수에서 호출하지말고 React 함수 내에서 호출해야 한다.
(예외 - Custom Hook 이후 설명 예정)

2. ESLint 플러그인

> 위 두 규칙을 강제하는 플러그인이다.
- Create React App에 기본적으로 포함되어 있다.

 

3. 설명
만약에 조건부로 effect를 실행하기를 원한다면, 조건문을 Hook 내부에 넣을 수 있다.

 

예시)

function Form() {
  // 1. name이라는 state 변수를 사용하세요.
  const [name, setName] = useState('Mary');

  // 2. Effect를 사용해 폼 데이터를 저장하세요.
  if (name !== '') {
    useEffect(function persistForm() {
      localStorage.setItem('formData', name);
    });
  }

  // 3. surname이라는 state 변수를 사용하세요.
  const [surname, setSurname] = useState('Poppins');

  // 4. Effect를 사용해서 제목을 업데이트합니다.
  useEffect(function updateTitle() {
    document.title = name + ' ' + surname;
  });

  // ...
}

 

만약 if 문을 useEffect 바깥에 작성한다면 문제가 발생한다.

1. name이 ''가 아니다.

2. useEffect( function persistForm() ) 은 실행되지 않는다.

3. useState('poppins') 부터 에러가 발생한다.

 

 

728x90

'Front-End > React' 카테고리의 다른 글

[React Hook] 5. 자신만의 Hook 만들기 (완)  (0) 2021.02.23
[React Hook] 3. Effect Hook  (0) 2021.02.23
[React Hook] 2. State Hook  (0) 2021.02.22
[React Hook] 1. Hook 소개  (0) 2021.02.22
[react-redux] 5. 요약 (완)  (0) 2021.02.17

댓글