Frontend/React

[React] React Hook "useEffect" is called in function 에러 해결

sol_git 2025. 3. 3. 12:09

문제 발생 원인

youtube에 있는 react강의를 따라하다가 에러가 발생했다. 

더보기

상세한 에러 문구

React Hook "useEffect" is called in function "index" that is neither a React function component nor a custom React Hook function. React component names must start with an uppercase letter. React Hook names must start with the word "use". (react-hooks/ rules-of-hooks)

알고보니, `React` 의 컴포넌트는 대문자로 시작해야 `useEffect`, `useState` 같은 hook을 사용할 때 오류가 나지 않는다는 것.

React는 대소문자를 구분하는 특성이 있다고 한다. 

이렇게 `index`라는 컴포넌트 함수에다가 `useState`, `useEffect`를 넣어서 사용하니 에러가 났다.

 

문제 해결 방법

💡 컴포넌트 이름을 대문자로 바꿔주자!

`index` -> `Index`로 변경했더니, 에러 밑줄이 깔끔하게 지워졌음

 

❓ 대문자로 바꿔야 하는 이유는?

React가 JSX에서 태그를 사용할 때, `기본  HTML 요소`와 `사용자 정의 컴포넌트`를 구분하는 방식이 다르기 때문

  • 소문자로 시작하면 : 기본 HTML 요소(`div`, `span`, `p` 같이) 로 인식
  • 대문자로 시작하면 : 사용자 정의 컴포넌트로 인식해서, 함수/클래스 등으로 정의된 컴포넌트를 렌더링 함

그래서, React 공식 문서에도 컴포넌트를 명명할 때, 대문자로 시작할 것을 권장한다!