> 웹 프론트엔드 > JS 튜토리얼 > React에서 Hooks의 필수 규칙: Hooks를 올바르게 사용하는 방법

React에서 Hooks의 필수 규칙: Hooks를 올바르게 사용하는 방법

Susan Sarandon
풀어 주다: 2024-12-24 14:08:15
원래의
852명이 탐색했습니다.

The Essential Rules of Hooks in React: How to Use Hooks Properly

React의 Hook 규칙

React 후크는 기능적 구성 요소에서 상태 및 기타 React 기능을 사용할 수 있게 해주는 강력한 기능입니다. 그러나 후크가 적절하고 일관되게 작동하도록 하려면 후크를 사용할 때 따라야 하는 특정 규칙이 있습니다. 이러한 규칙은 React가 후크의 상태, 효과 및 기타 기능을 최적화되고 예측 가능한 방식으로 관리하는 데 도움이 됩니다.

훅의 규칙은 다음과 같습니다.

  1. 최상위 수준에서만 후크를 호출하세요:
    • 루프, 조건 또는 중첩 함수 내에서 후크를 호출하지 마세요. 후크는 항상 React 구성요소 또는 사용자 정의 후크의 최상위 수준에서 호출되어야 합니다.
    • 이는 모든 렌더링에서 후크가 동일한 순서로 호출되도록 보장하며 이는 React의 상태 관리 및 렌더링 로직에 매우 중요합니다.

나쁜 예:

   if (someCondition) {
     useState(0);  // Bad: Hook inside condition
   }
로그인 후 복사
로그인 후 복사

좋은 예:

   const [count, setCount] = useState(0); // Always called at the top level
로그인 후 복사
로그인 후 복사
  1. React 함수에서만 후크를 호출하세요:
    • 기능적 구성 요소 또는 사용자 정의 후크에서 후크를 호출합니다. 일반 JavaScript 함수, 클래스 구성요소 또는 React의 기능 구성요소 생태계 외부에서 호출하지 마세요.
    • 후크는 일반 함수나 클래스 메소드가 아닌 기능적 구성요소 또는 사용자 정의 후크에서만 작동하도록 설계되었습니다.

나쁜 예:

   function regularFunction() {
     useState(0);  // Bad: Hook used outside a React component
   }
로그인 후 복사
로그인 후 복사

좋은 예:

   const MyComponent = () => {
     const [count, setCount] = useState(0); // Good: Inside a functional component
   };
로그인 후 복사
로그인 후 복사
  1. 사용자 정의 후크에 접두사 사용:
    • 사용자 정의 후크는 React의 규칙을 따르고 일반 기능과 구별하기 위해 사용부터 시작해야 합니다.
    • 이는 가독성과 일관성에 도움이 되며 React는 use 접두사가 있는 함수를 발견하면 내부적으로 규칙 위반을 확인할 수 있습니다.

나쁜 예:

   function fetchData() {  // Bad: Not prefixed with "use"
     // Custom hook logic
   }
로그인 후 복사
로그인 후 복사

좋은 예:

   function useFetchData() {  // Good: Prefixed with "use"
     // Custom hook logic
   }
로그인 후 복사

이 규칙이 왜 중요한가요?

  • 후크 호출 순서: 후크는 호출되는 순서에 의존합니다. React는 어떤 후크가 어떤 상태나 효과에 해당하는지 내부적으로 추적하므로 조건부로 또는 루프 내부에서 후크를 호출하면 해당 순서가 렌더링 간에 변경될 수 있습니다. 이로 인해 예상치 못한 동작과 버그가 발생합니다. 최상위 수준에서 후크를 호출하면 React는 항상 일관된 방식으로 이를 추적할 수 있습니다.

  • 렌더링 전반에 걸친 일관성: React는 구성 요소가 다시 렌더링될 때마다 동일한 순서로 호출되는 후크에 의존합니다. 서로 다른 렌더링 중에 후크가 다른 순서로 호출되면 React는 상태와 효과를 올바르게 적용하는 방법을 알 수 없습니다.

  • 훅 호출 불일치 방지: React가 아닌 함수나 조건부 블록에서 후크를 호출하면 React가 어떤 상태가 어떤 후크에 해당하는지 알 수 없기 때문에 불일치와 오류가 발생합니다.


규칙을 효과적으로 준수하는 방법

  1. 모든 후크를 구성 요소의 최상위 수준에 배치: 여기에는 useState, useEffect, useCallback, useMemo 및 기타 React 후크가 포함됩니다. 루프, 조건 또는 중첩 함수 안에 배치하지 마십시오.

:

   if (someCondition) {
     useState(0);  // Bad: Hook inside condition
   }
로그인 후 복사
로그인 후 복사
  1. 재사용 가능한 로직을 위한 사용자 정의 후크 생성: 여러 구성 요소에서 동일한 로직을 재사용하는 경우 사용자 정의 후크를 생성할 수 있습니다. 일관성을 보장하고 일반 기능과의 혼동을 피하기 위해 항상 사용자 정의 후크 이름을 사용하여 시작하십시오.

:

   const [count, setCount] = useState(0); // Always called at the top level
로그인 후 복사
로그인 후 복사
  1. 모든 렌더링에서 동일한 순서로 후크 사용: 루프나 조건문 내부에서 후크를 사용하더라도 모든 렌더링 중에 후크가 동일한 순서로 호출되는지 확인하세요.

나쁜 예:

   function regularFunction() {
     useState(0);  // Bad: Hook used outside a React component
   }
로그인 후 복사
로그인 후 복사

좋은 예:

   const MyComponent = () => {
     const [count, setCount] = useState(0); // Good: Inside a functional component
   };
로그인 후 복사
로그인 후 복사
  1. 사용자 정의 후크 규칙을 따르세요: 사용자 정의 후크는 구성 요소 간에 재사용 가능한 논리를 공유하는 데 적합합니다. 항상 앞에 use를 붙이고 React의 내장 후크와 동일한 규칙을 따르도록 하세요.

:

   function fetchData() {  // Bad: Not prefixed with "use"
     // Custom hook logic
   }
로그인 후 복사
로그인 후 복사

피해야 할 일반적인 실수

  • 조건부로 후크 호출: 조건이나 루프 내에서 후크를 호출하고 싶을 수도 있지만 이는 후크가 항상 동일한 순서로 호출되어야 한다는 규칙을 위반하는 것입니다. 대신 항상 동일한 순서로 후크를 호출하도록 코드를 재구성하는 것이 좋습니다.

  • React 구성 요소 외부 또는 사용자 정의 후크 사용: React 후크는 기능 구성 요소 또는 사용자 정의 후크 내부에서만 사용할 수 있습니다. 클래스 구성 요소나 일반 함수 내부에서 후크를 사용하면 오류가 발생합니다.


결론

후크 규칙은 React가 일관되고 예측 가능한 상태 관리 시스템을 유지할 수 있도록 하는 기본 원칙입니다. 이러한 규칙을 준수함으로써 React는 구성 요소가 제대로 작동하고 상태가 올바르게 관리되며 부작용이 예상대로 실행되도록 보장할 수 있습니다. 항상 기억하세요:

  • 구성 요소의 최상위 수준에서 후크를 호출하세요.
  • React 함수 또는 사용자 정의 후크에서만 후크를 호출하세요.
  • 항상 사용자 정의 후크 이름을 사용하여 시작하세요.

이러한 지침을 따르면 React 애플리케이션이 성능이 뛰어나고 버그가 없는지 확인할 수 있습니다.


위 내용은 React에서 Hooks의 필수 규칙: Hooks를 올바르게 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿