React 컴포넌트 소개

ReactBeginner
지금 연습하기

소개

이 랩에서는 React 의 컴포넌트라는 기본 개념을 배우게 됩니다. 컴포넌트는 독립적이고 재사용 가능한 코드 조각입니다. JavaScript 함수와 동일한 목적을 수행하지만, 독립적으로 작동하며 화면에 렌더링될 HTML(JSX 를 통해) 을 반환합니다. 간단한 "함수형 컴포넌트"를 만드는 데 집중할 것입니다.

별도의 파일에 새 컴포넌트를 만들고, 내보낸 다음, 메인 App 컴포넌트 내에서 가져와 렌더링할 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 86%입니다.학습자들로부터 98%의 긍정적인 리뷰율을 받았습니다.

새 파일 Hello.jsx 에 함수형 컴포넌트 생성

이 단계에서는 첫 번째 React 컴포넌트를 생성합니다. 코드를 체계적으로 관리하고 재사용성을 높이기 위해 각 컴포넌트를 자체 파일에 배치하는 것이 일반적인 관행입니다. Hello라는 이름의 컴포넌트를 위한 새 파일을 만들 것입니다.

먼저 개발 환경을 준비해 보겠습니다. 프로젝트 파일은 my-app 디렉토리에 이미 생성되어 있습니다. 이 디렉토리로 이동하여 필요한 종속성을 설치하고 개발 서버를 시작해야 합니다.

WebIDE 에서 터미널을 열고 (Terminal > New Terminal 메뉴 사용 가능) 다음 명령을 하나씩 실행합니다.

cd my-app
npm install
npm run dev -- --host 0.0.0.0 --port 8080

마지막 명령을 실행하면 개발 서버가 시작됩니다. LabEx 인터페이스의 Web 8080 탭을 클릭하여 실행 중인 애플리케이션을 볼 수 있습니다. 이 랩 전체에서 이 탭으로 전환하여 변경 사항을 확인할 수 있습니다.

왼쪽의 WebIDE 파일 탐색기에서 my-app/src 디렉토리로 이동합니다. src 폴더를 마우스 오른쪽 버튼으로 클릭하고 "New File"을 선택합니다. 새 파일의 이름을 Hello.jsx로 지정합니다.

이제 새로 생성된 my-app/src/Hello.jsx 파일에 다음 코드를 추가합니다. 이 코드는 간단한 함수형 컴포넌트를 정의합니다.

function Hello() {
  return <h1>Hello from the Hello component!</h1>;
}

이 코드를 살펴보겠습니다.

  • function Hello(): 이것은 표준 JavaScript 함수입니다. React 에서 함수형 컴포넌트는 단순히 JavaScript 함수입니다. 관례적으로 컴포넌트 이름은 항상 대문자로 시작합니다.
  • return <h1>...</h1>;: 함수는 JSX 를 반환합니다. JSX(JavaScript XML) 는 JavaScript 의 구문 확장으로, HTML 과 매우 유사하게 보입니다. UI 가 어떻게 보여야 하는지를 설명하는 데 사용됩니다.

컴포넌트 함수를 default 로 내보내기

이 단계에서는 Hello 컴포넌트를 애플리케이션의 다른 부분에서 사용할 수 있도록 만들 것입니다. 이를 위해 Hello.jsx 파일에서 내보내야 합니다.

JavaScript 모듈에는 명명된 내보내기 (named exports) 와 기본 내보내기 (default exports) 의 두 가지 주요 유형이 있습니다. 이 랩에서는 파일이 하나의 항목만 내보낼 때 컴포넌트에 흔히 사용되는 기본 내보내기를 사용할 것입니다.

my-app/src/Hello.jsx 파일 끝에 다음 줄을 추가합니다.

export default Hello;

이제 my-app/src/Hello.jsx 파일 전체는 다음과 같이 보일 것입니다.

function Hello() {
  return <h1>Hello from the Hello component!</h1>;
}

export default Hello;

export default 문은 Hello 함수를 이 파일의 기본 내보내기로 만들어 다른 파일에서 가져올 수 있도록 합니다.

import 문을 사용하여 App.jsx 에 컴포넌트 가져오기

이 단계에서는 Hello 컴포넌트를 메인 애플리케이션 컴포넌트인 App.jsx로 가져와 사용할 수 있도록 할 것입니다.

WebIDE 파일 탐색기에서 my-app/src/App.jsx 파일을 찾아 엽니다.

Hello 컴포넌트를 사용하려면 먼저 가져와야 합니다. my-app/src/App.jsx 파일의 맨 위, App 함수 정의 앞에 다음 import 문을 추가합니다.

import Hello from "./Hello.jsx";

이 줄은 JavaScript 에게 Hello.jsx 파일 (같은 디렉토리에 있으므로 ./ 사용) 의 기본 내보내기를 가져와 Hello라는 변수에 할당하도록 지시합니다.

import 를 추가한 후 my-app/src/App.jsx 파일의 상단은 다음과 같이 보일 것입니다 (다른 import 는 약간 다를 수 있습니다).

import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
import Hello from './Hello.jsx';

function App() {
// ... rest of the file

App 의 return 문 안에 가져온 컴포넌트 렌더링하기

이 단계에서는 App 컴포넌트 내에서 Hello 컴포넌트를 렌더링할 것입니다. 컴포넌트를 가져온 후에는 일반 HTML 태그처럼 JSX 내에서 사용할 수 있습니다.

my-app/src/App.jsx 파일에서 App 함수 내의 return 문을 찾습니다. 기존 코드는 Vite 의 기본 내용입니다. 이 모든 것을 새 컴포넌트로 교체할 수 있습니다.

기본 내용을 제거하고 대신 <Hello /> 컴포넌트를 렌더링하도록 App 함수를 수정합니다.

App 함수는 다음과 같이 보여야 합니다.

function App() {
  return (
    <>
      <Hello />
    </>
  );
}

여기서 <Hello />Hello 컴포넌트를 렌더링하는 방법입니다. <></>는 Fragment 라고 하며, DOM 에 추가 노드를 추가하지 않고 자식 목록을 그룹화할 수 있게 해줍니다.

이제 my-app/src/App.jsx 파일 전체는 다음과 같이 보일 것입니다.

import Hello from "./Hello.jsx";
import "./App.css";

function App() {
  return (
    <>
      <Hello />
    </>
  );
}

export default App;

참고: 명확성을 위해 사용되지 않는 import 와 상태 로직을 제거했습니다.

App JSX 가 Hello 컴포넌트를 렌더링하는 모습

파일 저장 후 브라우저에서 업데이트된 렌더링 확인

이 단계에서는 작업 결과를 확인할 것입니다.

my-app/src/Hello.jsxmy-app/src/App.jsx 모두에서 모든 변경 사항을 저장했는지 확인하세요. 파일을 저장하려면 Ctrl+S 또는 Cmd+S를 누르면 됩니다.

소개에서 시작한 Vite 개발 서버는 Hot Module Replacement (HMR) 을 사용합니다. 이는 파일 변경을 자동으로 감지하고 전체 페이지를 다시 로드할 필요 없이 브라우저에서 애플리케이션을 업데이트한다는 것을 의미합니다.

LabEx 인터페이스의 Web 8080 탭으로 전환하세요. 이제 페이지에 "Hello from the Hello component!"라는 텍스트가 표시되어야 합니다. 이 내용은 새로 만든 Hello 컴포넌트에서 렌더링된 것입니다.

브라우저에 Hello 컴포넌트에서 온 Hello 가 표시되는 모습

변경 사항이 보이지 않으면 브라우저 탭의 주소 표시줄에 있는 새로고침 버튼을 클릭해 보세요.

축하합니다! 첫 번째 React 컴포넌트를 성공적으로 생성, 내보내기 및 렌더링했습니다!

요약

이 실습에서는 React 애플리케이션에서 컴포넌트를 생성하고 사용하는 기본적인 워크플로우를 배웠습니다. 이러한 모듈식 접근 방식은 React 개발의 핵심 원칙입니다.

다음과 같은 작업을 성공적으로 수행했습니다.

  • 전용 파일 (Hello.jsx) 에 새로운 함수형 컴포넌트 생성
  • export default를 사용하여 컴포넌트를 애플리케이션의 다른 부분에서 사용할 수 있도록 함
  • import를 사용하여 컴포넌트를 메인 App.jsx 파일로 가져옴
  • JSX 태그 구문 (<Hello />) 을 사용하여 가져온 컴포넌트 렌더링

컴포넌트를 생성, 내보내기 및 가져오는 이 패턴은 크고 유지보수 가능한 React 애플리케이션을 구축하는 데 필수적입니다.