준영이의 성장일기(FrontEnd)
Rendered more hooks than during the previous render 본문
제목을 보면 알 수 있듯이 이슈 내용은 다음과 같았다.
Rendered more hooks than during the previous render.
<원인>
훅의 호출횟수가 일정하지 않다는 뜻인데 원인으로는 리액트 훅 같은 경우 컴포넌트 내부 최상위 레벨에 선언되어야 한다. 또한 컴포넌트 리턴 이후에 리액트 훅이 발견되면 해당 오류가 발생한다. 나의 경우 모달 컴포넌트를 구현하였고 모달이 열려있지 않다면 조건문을 통해 빠져나가도록 구현했다. 하지만 조건문 밑에 useEffect 훅이 있었고 이는 조건문에서 이미 렌더를 하는데 페이지에서 사용될 수 있는 훅이 존재하는 것이므로 해당 에러가 발생했다.
<해결>
✅ 기존에는 if (!isModalOpen) return null 부분이 useEffect 위에 있었는데 해당 부분을 맨 밑으로 이동 시킴으로써 에러 해결 완료
const { isModalOpen, closeModal } = loginModalStore()
const [inputIdValue, setInputIdValue] = useState('')
const [inputPasswordValue, setInputPasswordValue] = useState('')
const handleIdInputChange = (e) => {
setInputIdValue(e.target.value)
}
const handlePasswordInputChange = (e) => {
setInputPasswordValue(e.target.value)
}
useEffect(() => {
setInputIdValue('')
setInputPasswordValue('')
}, [])
if (!isModalOpen) return null
<참고 레퍼런스>
Uncaught Invariant Violation: Rendered more hooks than during the previous render
I have a component that looks like this (very simplified version): const component = (props: PropTypes) => { const [allResultsVisible, setAllResultsVisible] = useState(false); const
stackoverflow.com
'프론트엔드 > React.js' 카테고리의 다른 글
React 공식문서 도장깨기(1) - useState (0) | 2024.08.21 |
---|---|
React useEffect, 상태 업데이트의 비동기성 (2) | 2024.08.17 |
Open API를 활용한 여행일정 구상하는 프로젝트(4) (0) | 2024.06.27 |
UMC 10주차 미션 및 스터디 마무리 (0) | 2024.06.16 |
Open Api를 활용한 여행 일정 구상하는 프로젝트(3) (2) | 2024.06.06 |