[React JS] Warning: Internal React error: Expected static flag was missing. 에러와 hook 호출의 규칙
2024. 7. 17. 17:13ㆍReact JS
Warning: Internal React error: Expected static flag was missing. Please notify the React team.
리액트 프로젝트를 진행하는 중에 이런 에러가 발생했다.
아니 이게 뭐지?! 하면서 구글링을 했더니 나와 같은 문제를 겪은 사람들이 있었다.
내가 작성한 코드 둥에 hook의 규칙을 위반하는 것이 있는 것이라고 한다.
if (!isVisible) return null;
바로 컴포넌트 내에서 early return 하는 것이 문제가 된다고 하는데, 내 코드 중 이런 것이 있었다.
만약 early return 을 hook까지 호출할 필요가 없지 않나? 라는 생각으로 early return 하는 부분 다음에 hook을 호출 하였던 것이었다.
if (pending) {
<>데이터 로딩 중...^^</>;
}
if (!diningInfos || diningInfos?.length < 1) {
return <>데이터 없음!</>;
}
const { t } = useI18n(); // 이 부분
이 부분이 hook의 규칙을 위반하는 것일까 하여, hook을 호출하는 저 부분은 컴포넌트 맨위로 올렸더니 해당 에러는 더 이상 뜨지 않았다.
const { t } = useI18n(); // early return 위로 이동
if (pending) {
<>데이터 로딩 중...^^</>;
}
if (!diningInfos || diningInfos?.length < 1) {
return <>데이터 없음!</>;
}
더 알아보니 리액트 버전 17에서는 이런 방식이 문제가 되지 않았는데, 리액트 버전 18부터 이런 방식이 문제가 되었다고 한다.
정리
- 컴포넌트 내에서 ealry return 을 사용하게 된다면 hook을 early return 하는 부분 위에 작성하도록 하자!
참고:
'React JS' 카테고리의 다른 글
[React JS] 특정 브라우저에서만 URLSearchParams 의 size 가 null 일 때 (0) | 2025.05.18 |
---|---|
[React JS] Vite 빌드 시 파라미터로 개발 소스 내 assets 캐시 버스팅 하는 방법 (0) | 2025.04.02 |
[React JS] React 로 MPA(Multi Page Application) 구현하기 (1) | 2024.04.22 |
[React JS] Yarn 명령어 실행하는데 self signed certificate 에러가 날 경우 (0) | 2024.04.12 |
[React JS] 리액트 컴포넌트에서 public 폴더 내의 script 를 다시 불러오기 (0) | 2024.02.22 |