>웹 프론트엔드 >JS 튜토리얼 >내 useEffect 후크가 React 18 개발 모드에서 두 번 실행되는 이유는 무엇입니까?

내 useEffect 후크가 React 18 개발 모드에서 두 번 실행되는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-05 20:44:44724검색

Why Does My useEffect Hook Run Twice in React 18 Development Mode?

React 18의 Double useEffect 호출 이해

StrictMode가 포함된 React 18에서 useEffect 후크를 사용하면 초기 마운트 시 후크가 두 번 호출되는 것을 볼 수 있습니다. 이는 특히 애플리케이션에서 예상치 못한 동작을 관찰하는 경우 우려를 불러일으킬 수 있습니다.

이중 호출의 이론적 근거

React 문서에 따르면 이는 미래에 대비하기 위해 React 18에 도입된 의도된 동작입니다. 상태 보존 및 효율적인 UI 업데이트와 관련된 개선 사항입니다. 마운트에 구성 요소를 다시 마운트함으로써 React는 여러 번 마운트 및 마운트 해제되는 효과에 대해 코드가 복원력이 있는지 확인하는 것을 목표로 합니다.

개발 대 프로덕션 동작

이 동작은 특정하다는 점에 유의하는 것이 중요합니다. StrictMode가 활성화된 개발 모드로 전환합니다. 프로덕션 모드에서는 단일 호출만 이루어집니다.

Resolving Effects Calling Twice

이 동작과 관련된 문제가 발생하면 다음 접근 방식을 고려하십시오.

1 . 정리 처리:

useEffect에 구성 요소가 마운트 해제될 때 필요한 작업을 수행하는 정리 기능이 있는지 확인하세요. 이렇게 하면 취소된 HTTP 요청이나 메모리 누수와 같은 문제를 방지할 수 있습니다.

2. 프로덕션에서 StrictMode 방지:

이중 호출로 인해 심각한 문제가 발생하는 경우 동작이 개발 모드로 제한되므로 프로덕션에서 StrictMode를 비활성화할 수 있습니다.

3. HTTP 요청 캐시:

개발 중 중복된 HTTP 요청을 방지하려면 요청을 캐시하고 중복 제거하는 라이브러리를 활용하십시오.

Effect 사용 모범 사례

이 문제에는 필요할 수 있습니다. 또한 useEffect 사용법을 다시 검토하고 최선의 방법을 채택할 수 있는 기회이기도 합니다. 사례:

  • useEffect를 사용하여 변경 사항을 듣고 부작용을 수행합니다.
  • useEffect 내부에서 상태를 초기화하지 마세요.
  • 마운트 해제 시 리소스를 정리하려면 정리 기능을 사용하세요. .

double useEffect 호출은 잠재적인 버그를 발견하기 위한 것임을 기억하세요. 강력하고 프로덕션에 바로 사용할 수 있는 React 애플리케이션을 작성할 수 있습니다.

위 내용은 내 useEffect 후크가 React 18 개발 모드에서 두 번 실행되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.