수정 - React에서 예상보다 적은 수의 후크를 렌더링함
5350 단어 react
Error: Rendered fewer hooks than expected. This may be caused by an accidental early return statement.
이 기사에서는 이 오류가 발생하는 이유와 해결 방법에 대해 설명합니다.
문제 복제
먼저 문제를 복제해 보겠습니다. 다음과 같이 코드를 업데이트합니다.
import { useEffect, useState } from "react"
function App() {
const [hasError, setHasError] = useState(false)
if (hasError) {
const x = { foo: true }
if (x.foo) {
return <div>Error</div>
}
}
// eslint-disable-next-line react-hooks/rules-of-hooks
useEffect(() => {
setHasError(true)
}, [])
return <div className="App">Loading</div>
}
export default App
지금 코드를 실행하면 다음 오류가 발생합니다.
문제 이해
위의 오류는 조건 내부에 return 문이 있고 반환 후 useEffect 후크가 있기 때문에 발생합니다. Hooks의 규칙에 따라 조건에 관계없이 모든 Hooks를 실행해야 합니다. 따라서 return 문 이전에 모든 후크 호출을 유지 관리해야 합니다.
문제 해결
if 조건 위로 useEffect 후크를 이동하면 문제가 해결됩니다.
import { useEffect, useState } from "react"
function App() {
const [hasError, setHasError] = useState(false)
useEffect(() => {
setHasError(true)
}, [])
if (hasError) {
const x = { foo: true }
if (x.foo) {
return <div>Error</div>
}
}
return <div className="App">Loading</div>
}
export default App
Reference
이 문제에 관하여(수정 - React에서 예상보다 적은 수의 후크를 렌더링함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/collegewap/fix-rendered-fewer-hooks-than-expected-in-react-3757텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)