React

React에서 Props 사용법

굿센스굿 2024. 12. 9. 16:51
반응형

 

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를 활용하면, 효율적이고 유연한 컴포넌트를 작성할 수 있습니다.

반응형