React에서 가장 잘못 사용되는 Hook은 확실히 useEffect입니다. 여기에는 한 가지 이유가 아닌 여러 가지 이유가 있습니다. 제 관점에서 하나하나 살펴보겠습니다.
그래서 제가 더 영향력이 있다고 생각하는 이유 중 하나는 프리훅 시대에 클래스를 사용했기 때문입니다. 이 시기에 React를 사용하기 시작한 사람들은 lifecycle 메소드와 this.state를 사용합니다. 이번 포스팅에서 이에 대해 조금 썼습니다. 오래됐지만 골드 클래스 시대를 그리워하고 그 단순성과 직접성을 중시하는 사람들이 있습니다. 객체지향과 명령형 프로그래밍을 배우는 일반적인 프로그래머의 상식과 꽤 잘 맞는 모델이고, 정신적 구조가 바로 그 모델과 연결되어 있습니다.
그런 다음 후크를 추가했습니다.
문제는 패러다임 전환이 일어났다는 것입니다. 일반적으로 프로그래머는 명령형과 객체 지향 패러다임에 매우 익숙하며 대학과 과정에서 일반적으로 가르치며, 주로 명령형 패러다임은 인간의 일반적인 사고 흐름을 따릅니다.
함수형 프로그래밍과 같은 다른 패러다임으로 전환하면 일반적인 사고방식에 그다지 가깝지 않은 반전된 사고방식에 직면하게 됩니다. 이 "반전"은 이해하기 더 어렵게 만듭니다.
리액티브 프로그래밍에도 같은 문제가 있습니다. 이는 프로그래밍을 수행하는 능동적인 방식에서 수동적인 방식으로의 변화입니다. useEffect를 잘못 사용한 것으로 보입니다.
대부분의 "ERRORS"는 상태 동기화입니다. 따라서 개발자는 useEffect를 사용하여 일부 상태 또는 소품을 추적하고 일부 논리를 기반으로 상태를 변경합니다. 이 사례는 우리에게 필요한 반대 사고방식을 드러냅니다.
OOP 및 명령형 프로그래밍에서는 능동적인 방식으로 변경과 논리를 수행합니다. 반응성은 반대를 기반으로 하며 기회에 반응하고 상태가 변경될 때 시스템이 수행하기를 원하는 계산을 선언합니다.
대부분의 사용자의 경우 useEffect에서 새 상태를 적극적으로 설정하는 것은 상태가 변경된 직접적인 방법이므로 변경 사항을 수동으로 추적하고 이를 통해 다른 상태를 업데이트해야 합니다. 문서에는 권장되지 않는다고 나와 있지만 이에 대한 명확한 이유는 없습니다.
React에서 파생시키는 것은 성능상의 이유뿐만 아니라 개념적인 측면에서도 권장되는 방법입니다. React는 파생 기계이고, 그 결과는 결국 UI의 파생입니다. 이러한 상태 전환 및 재계산을 적극적으로 처리할 필요는 없으며 작성한 선언 코드에 따라 발생합니다.
React 문서에서는 이를 잘 설명하지 않았습니다. Hooks 이후 React 핵심 팀과 콘텐츠 제작자는 이러한 개념을 설명하는 강연이나 강좌를 만들지 않았습니다.
React는 "개념적 혼란"이 있는 것 같습니다. Hooks로의 전환이 가장 강력한 예이지만 유일한 예는 아닙니다. 후크 사용에는 한 가지 큰 차이점이 있는데, 이는 반응성을 기반으로 하며 React 핵심 팀이 반응성에 대해 농담을 하더라도 후크로 전환하기로 결정한 것입니다.
기능성 구성 요소가 딱 맞습니다. 다시 렌더링할 때마다 함수를 다시 호출하고 내부의 모든 항목은 현재 버전의 상태와 소품을 가져오므로 내부에서 생성된 모든 항목은 파생처럼 동작합니다. 반환값인 JSX는 UI에서 파생된 것입니다.
그러나 React는 함수형 프로그래밍과 반응성을 완벽하고 순수하게 구현한 것이 아닙니다. 개념과 아이디어를 영감으로 삼아 이를 병합하여 고유한 모델을 만들지만 어쨌든 핵심은 거기에 있습니다.
이 점을 분명히 해야 합니다. 반응성의 예가 아니더라도 개념을 사용하고 패턴을 더 깊이 알면 개발자가 이러한 기본 요소를 사용하여 솔루션을 쉽게 생각하고 만들 수 있습니다. 그런데 제가 이 “Reactivity in React” 시리즈를 쓰는 이유가 바로 이것입니다.
사용자에게 단순히 "useEffect에서 상태를 동기화하지 마세요, 나쁘네요"라고 말하지 말고, 왜 나쁜지 설명하고, "동기화 상태"가 첫 번째 해결 방법이라고 생각하는 방법을 설명하세요.
이 원인은 특히 React 19에서 개선되고 있는 원인입니다. 비동기 파생은 useEffect를 사용하는 원인 중 하나였지만 이제는 어떤 방식으로든 이 격차를 메우는 프리미티브를 사용해야 합니다.
물론 동적 파생 및 기타 경우와 같이 기본 요소에는 여전히 일부 약점이 있지만, 이 ref 콜백의 경우처럼 점점 더 React가 후크 필드에서 부작용을 더 많이 제거하고 있습니다.
그리고 우리는 언제나 미래의 소식을 기대할 수 있습니다. 모든 사람이 React의 다른 모든 반응성 게시물을 읽고 구체적인 사례와 질문을 가져오도록 초대합니다. 우리는 반응성과 관련된 이러한 일반적인 문제에 대한 더 많은 솔루션을 탐색하고 찾을 수 있습니다.
위 내용은 useEffect 잘못된 사용법에 대한 추론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!