본문 바로가기
React

React에서 Props 사용법

by 굿센스굿 2024. 12. 9.
반응형

 

React는 컴포넌트 기반의 UI 라이브러리로, 다양한 컴포넌트들 간의 데이터 전달을 효율적으로 처리하기 위해 props라는 개념을 도입했습니다. props는 "properties"의 약자로, 부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달할 수 있게 해줍니다. 이 글에서는 React에서 props를 사용하는 방법을 상세히 설명하고, 이를 활용한 다양한 예시를 통해 이해를 돕겠습니다.

1. Props의 기본 개념

React 컴포넌트는 두 가지 주요 방식으로 데이터를 처리할 수 있습니다: props와 state. props는 부모 컴포넌트에서 자식 컴포넌트로 전달되는 값이며, state는 컴포넌트 내부에서 관리되는 값입니다. props는 읽기 전용이며, 자식 컴포넌트에서 변경할 수 없습니다.

Props의 특징

  • 부모 컴포넌트에서 자식 컴포넌트로 전달
  • 자식 컴포넌트에서는 변경 불가 (읽기 전용)
  • 자식 컴포넌트는 props를 통해 부모 컴포넌트와 데이터를 공유

2. Props 사용법

2.1. 컴포넌트에 Props 전달하기

먼저, 부모 컴포넌트에서 자식 컴포넌트로 props를 전달하는 방법을 살펴보겠습니다.

import React from 'react';

// 자식 컴포넌트
function Greeting(props) {
  return <h1>Hello, {props.name}!</h1>;
}

// 부모 컴포넌트
function App() {
  return (
    <div>
      <Greeting name="John" />
    </div>
  );
}

export default App;

위의 코드에서 Greeting 컴포넌트는 props를 통해 부모 컴포넌트 App으로부터 name 속성을 전달받습니다. 이 때 name="John"은 부모 컴포넌트에서 자식 컴포넌트로 전달되는 prop입니다.

2.2. props 디스트럭처링

props를 직접 참조하는 대신, ES6의 디스트럭처링을 사용하여 더 간결하게 작성할 수 있습니다. 디스트럭처링은 props 객체의 값을 직접 변수로 추출하는 방법입니다.

import React from 'react';

// 자식 컴포넌트
function Greeting({ name }) {
  return <h1>Hello, {name}!</h1>;
}

function App() {
  return (
    <div>
      <Greeting name="John" />
    </div>
  );
}

export default App;

디스트럭처링을 사용하면 props.name 대신 name을 바로 사용할 수 있어 코드가 더 깔끔해집니다.

3. Props의 데이터 타입과 유효성 검사

React는 props가 전달될 때, 해당 데이터가 올바른 타입인지 검사할 수 있는 기능을 제공합니다. 이를 위해 prop-types라는 패키지를 사용할 수 있습니다.

3.1. PropTypes 설치

먼저 prop-types를 설치합니다.

npm install prop-types

3.2. PropTypes 사용하기

설치 후, 컴포넌트에서 props의 타입을 검사할 수 있습니다. 예를 들어, name은 문자열이어야 하고, age는 숫자여야 한다는 조건을 설정할 수 있습니다.

import React from 'react';
import PropTypes from 'prop-types';

// 자식 컴포넌트
function Person({ name, age }) {
  return <p>{name} is {age} years old.</p>;
}

// PropTypes 설정
Person.propTypes = {
  name: PropTypes.string.isRequired,
  age: PropTypes.number.isRequired,
};

function App() {
  return (
    <div>
      <Person name="John" age={30} />
    </div>
  );
}

export default App;

위 예시에서 name과 age는 각각 string과 number 타입이어야 하며, 필수 항목임을 isRequired로 지정하고 있습니다. 만약 올바른 타입이 전달되지 않으면, 개발자 콘솔에 경고가 출력됩니다.

4. Props와 컴포넌트의 재사용성

props를 활용하면 컴포넌트를 더 재사용 가능하게 만들 수 있습니다. 예를 들어, 동일한 Greeting 컴포넌트를 여러 번 사용하면서 각기 다른 이름을 전달할 수 있습니다.

import React from 'react';

function Greeting({ name }) {
  return <h1>Hello, {name}!</h1>;
}

function App() {
  return (
    <div>
      <Greeting name="John" />
      <Greeting name="Alice" />
      <Greeting name="Bob" />
    </div>
  );
}

export default App;

위와 같이 Greeting 컴포넌트를 여러 번 사용하면서 각기 다른 props를 전달하면, 동일한 컴포넌트를 재사용할 수 있어 코드가 더 효율적이고 유지보수가 용이해집니다.

5. Props의 기본값 설정

props가 전달되지 않았을 때 기본값을 설정할 수 있습니다. 이를 위해 defaultProps를 사용합니다. defaultProps는 props가 전달되지 않았을 때 사용되는 기본값을 정의하는 방법입니다.

import React from 'react';

// 자식 컴포넌트
function Greeting({ name }) {
  return <h1>Hello, {name}!</h1>;
}

// defaultProps 설정
Greeting.defaultProps = {
  name: 'Guest',
};

function App() {
  return (
    <div>
      <Greeting />
      <Greeting name="John" />
    </div>
  );
}

export default App;

위 코드에서 첫 번째 Greeting 컴포넌트는 name prop이 전달되지 않았기 때문에 defaultProps에 정의된 'Guest'가 사용됩니다. 두 번째 Greeting 컴포넌트는 name prop이 전달되어 'John'이 출력됩니다.

6. 결론

React에서 props는 부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달하는 중요한 방법입니다. props를 통해 컴포넌트를 재사용 가능하고, 유지보수가 용이한 구조로 만들 수 있습니다. 또한, props의 타입 검사, 기본값 설정 등을 통해 코드의 안정성과 가독성을 높일 수 있습니다.

이 글에서는 props의 기본 개념부터 사용법, 유효성 검사, 컴포넌트 재사용성 등을 다양한 예시를 통해 설명하였습니다. props를 적절히 활용하여, React에서 더욱 효율적이고 견고한 애플리케이션을 만들 수 있을 것입니다.

참고자료


위와 같은 방식으로 React의 props를 활용하면, 효율적이고 유연한 컴포넌트를 작성할 수 있습니다.

반응형