← 목록

React에서의 재사용 가능한 컴포넌트 디자인 패턴

작성: 2025년 08월 13일읽기: 약 3분

React를 사용하면서 우리는 코드를 재사용할 수 있는 방법을 항상 찾고 있습니다. 재사용 가능한 컴포넌트는 시간을 절약하고, 코드의 일관성을 유지하며, 프로젝트의 유지보수를 쉽게 만들어줍니다. 오늘은 React에서 재사용 가능한 컴포넌트를 디자인하는 몇 가지 패턴에 대해 이야기해보겠습니다.

1. Props를 활용한 컴포넌트 커스터마이징

컴포넌트를 만들 때, 다양한 상황에서 사용될 수 있도록 props를 통해 커스터마이징할 수 있습니다. 예를 들어, 버튼 컴포넌트는 다양한 색상, 크기, 클릭 이벤트를 props로 받아서 다양한 곳에서 재사용할 수 있습니다.

function CustomButton({ color, size, onClick, children }) {
  return (
    <button
      style={{ backgroundColor: color, fontSize: size }}
      onClick={onClick}
    >
      {children}
    </button>
  );
}

2. 고차 컴포넌트(Higher-Order Components, HOC)

고차 컴포넌트는 컴포넌트 로직을 재사용하기 위한 고급 기술입니다. HOC는 컴포넌트를 인자로 받아서 새로운 컴포넌트를 반환하는 함수입니다. 예를 들어, 데이터를 가져오는 로직을 여러 컴포넌트에서 재사용할 수 있습니다.

function withDataFetching(WrappedComponent, dataSource) {
  return class extends React.Component {
    state = {
      data: null,
    };

    componentDidMount() {
      fetch(dataSource)
        .then(response => response.json())
        .then(data => this.setState({ data }));
    }

    render() {
      return <WrappedComponent data={this.state.data} {...this.props} />;
    }
  };
}

3. 컴포지션(Composition)

컴포지션은 컴포넌트를 함께 사용하여 새로운 기능을 만드는 방법입니다. React는 컴포지션을 쉽게 만들 수 있도록 설계되었습니다. 예를 들어, Card 컴포넌트 안에 Image, Title, Description 컴포넌트를 조합하여 사용할 수 있습니다.

function Card({ children }) {
  return <div className="card">{children}</div>;
}

function Image({ src }) {
  return <img src={src} alt="card image" />;
}

function Title({ children }) {
  return <h2>{children}</h2>;
}

function Description({ children }) {
  return <p>{children}</p>;
}

이러한 패턴을 사용하면, 컴포넌트를 더 유연하게 재사용할 수 있습니다. 각 컴포넌트는 독립적으로도 유용하지만, 함께 사용할 때 더 큰 가치를 발휘합니다.

React에서 재사용 가능한 컴포넌트를 디자인하는 것은 개발 과정을 효율적으로 만들고, 프로젝트의 유지보수를 용이하게 합니다. 위에서 소개한 패턴들을 활용하여, 여러분의 프로젝트에 재사용 가능한 컴포넌트를 구현해 보세요.