React 컴포넌트 이름 대소문자 규칙: 문제와 해결 방법

React에서 컴포넌트를 작성할 때는 반드시 이름을 대문자로 시작해야 합니다. 이름을 소문자로 시작하면 React는 해당 태그를 HTML 기본 태그로 간주하기 때문에 예상치 못한 오류가 발생할 수 있습니다.

문제 상황

다음과 같은 코드를 작성했다고 가정해봅시다.

app.js

import "./styles.css";
import Greeter from "./Greeter";
import loginForm from "./loginForm";
import { Dog, add } from "./Dog";

add(1, 2);

export default function App() {
  return (
    <div className="App">
      <loginForm />
      <Greeter />
      <Dog />
    </div>
  );
}

loginForm.js

function loginForm() {
  return (
    <form>
      <input type="text" name="username" id="username" />
      <input type="password" name="password" id="password" />
    </form>
  );
}

export default loginForm;

이 코드를 실행하면 loginForm 컴포넌트가 화면에 렌더링되지 않는 문제가 발생합니다. 이는 React가 <loginForm />을 컴포넌트로 인식하지 못하고 HTML 요소로 처리하기 때문입니다.

원인 분석

React에서는 컴포넌트 이름이 대문자로 시작해야 컴포넌트로 인식됩니다. 이름이 소문자로 시작하면 HTML 기본 태그로 간주하므로, 브라우저는 이를 알 수 없는 HTML 요소로 처리하고 아무 것도 렌더링하지 않습니다.

해결 방법

컴포넌트 이름을 대문자로 시작하도록 수정하면 문제가 해결됩니다.

수정된 코드

loginForm.js
function LoginForm() {
  return (
    <form>
      <input type="text" name="username" id="username" />
      <input type="password" name="password" id="password" />
    </form>
  );
}

export default LoginForm;
app.js
import "./styles.css";
import Greeter from "./Greeter";
import LoginForm from "./loginForm";
import { Dog, add } from "./Dog";

add(1, 2);

export default function App() {
  return (
    <div className="App">
      <LoginForm />
      <Greeter />
      <Dog />
    </div>
  );
}

추가 설명

React에서 컴포넌트 이름은 대문자로 시작하는 것이 관례이며, 이는 React의 동작 방식과 관련이 깊습니다. React는 소문자로 시작하는 태그를 HTML 기본 태그로 처리하기 때문에, 사용자 정의 컴포넌트를 정의할 때 대문자로 시작해야만 정상적으로 렌더링됩니다.

요약

  • React 컴포넌트 이름은 반드시 대문자로 시작해야 합니다.
  • 이름이 소문자로 시작하면 React는 이를 HTML 태그로 간주합니다.
  • 문제를 해결하려면 컴포넌트 이름을 대문자로 수정하세요.

이 규칙을 준수하면 React에서 발생할 수 있는 불필요한 렌더링 오류를 방지할 수 있습니다.

Leave a comment