R
React 학습 문서

이 문서에서는 React의 핵심 개념과 실제 활용 방법을 자세히 알아봅니다.

컴포넌트와 Props

컴포넌트의 종류

1. 함수형 컴포넌트

function Welcome(props) {
  return <h1>안녕하세요, {props.name}</h1>;
}

// 화살표 함수로도 작성 가능
const Welcome = (props) => {
  return <h1>안녕하세요, {props.name}</h1>;
};

2. 클래스형 컴포넌트

레거시 코드에서 볼 수 있는 형태로, 현재는 함수형 컴포넌트를 권장합니다.

class Welcome extends React.Component {
  render() {
    return <h1>안녕하세요, {this.props.name}</h1>;
  }
}

Props의 특징과 사용법

Props 전달하기

// 부모 컴포넌트
function App() {
  return <Welcome name="Sara" age={25} isStudent={true} />;
}

// 자식 컴포넌트
function Welcome(props) {
  return (
    <div>
      <h1>안녕하세요, {props.name}</h1>
      <p>나이: {props.age}</p>
      <p>학생여부: {props.isStudent ? '예' : '아니오'}</p>
    </div>
  );
}

Props 구조분해할당

function Welcome({ name, age, isStudent }) {
  return (
    <div>
      <h1>안녕하세요, {name}</h1>
      <p>나이: {age}</p>
      <p>학생여부: {isStudent ? '예' : '아니오'}</p>
    </div>
  );
}

컴포넌트 합성

function Welcome(props) {
  return <h1>안녕하세요, {props.name}</h1>;
}

function App() {
  return (
    <div>
      <Welcome name="Sara" />
      <Welcome name="Cahal" />
      <Welcome name="Edite" />
    </div>
  );
}

children props

컴포넌트의 여는 태그와 닫는 태그 사이의 내용을 전달받을 수 있습니다.

function Card({ children, title }) {
  return (
    <div className="card">
      <h2>{title}</h2>
      <div className="card-content">
        {children}
      </div>
    </div>
  );
}

// 사용 예시
function App() {
  return (
    <Card title="환영합니다">
      <p>이것은 카드의 내용입니다.</p>
      <button>자세히 보기</button>
    </Card>
  );
}

Props 검증

PropTypes를 사용하여 컴포넌트에 전달되는 props의 타입을 검증할 수 있습니다.

import PropTypes from 'prop-types';

function Welcome(props) {
  return <h1>안녕하세요, {props.name}</h1>;
}

Welcome.propTypes = {
  name: PropTypes.string.isRequired,
  age: PropTypes.number,
  isStudent: PropTypes.bool
};

학습 포인트

  • 각 섹션의 예제 코드를 직접 실습해보세요.
  • 이해가 안 되는 부분은 여러 번 읽고 실습하세요.
  • 학습한 내용을 바탕으로 프로젝트를 만들어보세요.