수정 - React Hook "useEffect"가 조건부로 호출됨
4921 단어 react
React Hook "useEffect" is called conditionally. React Hooks must be called in the exact same order in every component render. Did you accidentally call a React Hook after an early return?
이 기사에서는 오류를 복제하고 오류가 발생하는 이유를 확인하고 오류를 수정합니다.
프로젝트 설정
다음 명령을 사용하여 반응 프로젝트를 만듭니다.
npx create-react-app react-useeffect-called-conditionally
문제 복제
이제 다음 코드를 사용하여
App.js
를 업데이트합니다.import React, { useEffect, useState } from "react"
const App = () => {
const [isLoading, setIsLoading] = useState(false)
if (isLoading) {
return <div>Loading..</div>
}
useEffect(() => {
// Load some data
setIsLoading(false)
}, [])
return <div>App</div>
}
export default App
앱을 실행하려고 하면 브라우저에 다음 오류가 표시됩니다.
문제 이해
React는 return 문(inside
isLoading
검사) 후에 useEffect을 호출하기 때문에 위의 오류를 발생시킵니다. 모든 후크는 모든 return 문 전에 정의되어야 합니다.수정
수정은 간단합니다. if 조건 전에 useEffect 블록을 이동하면 코드가 제대로 작동합니다.
import React, { useEffect, useState } from "react"
const App = () => {
const [isLoading, setIsLoading] = useState(false)
useEffect(() => {
// Load some data
setIsLoading(false)
}, [])
if (isLoading) {
return <div>Loading..</div>
}
return <div>App</div>
}
export default App
Reference
이 문제에 관하여(수정 - React Hook "useEffect"가 조건부로 호출됨), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/collegewap/fix-react-hook-useeffect-is-called-conditionally-25m5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)