[react] 컴포넌트 설계 및 구조화

React는 모듈화된 컴포넌트 기반의 라이브러리로, 재사용 가능하고 유지보수가 용이한 코드를 작성하는 데 매우 유용합니다. 컴포넌트 설계와 구조화는 React 애플리케이션의 품질과 성능을 결정짓는 중요한 요소입니다.

컴포넌트 설계

컴포넌트를 설계할 때, 각 컴포넌트의 역할과 책임을 명확히 정의해야 합니다. 단일 책임 원칙을 준수하여 각 컴포넌트가 오직 하나의 목적에 집중하도록 설계해야 합니다. 예를 들어, 헤더, 사이드바, 푸터와 같은 각 영역을 담당하는 컴포넌트를 설계하고 이를 조합하여 전체 레이아웃을 생성할 수 있습니다. 또한 필요한 데이터와 상태를 고려하여 컴포넌트 간에 적절하게 분배하고 관리해야 합니다.

컴포넌트 구조화

컴포넌트를 구조화하는 것은 코드의 가독성과 유지보수를 증진시키는 데 도움이 됩니다. 컨테이너 컴포넌트프레젠테이셔널 컴포넌트의 분리는 이에 대한 좋은 예시입니다. 컨테이너 컴포넌트는 상태 및 데이터를 관리하고, 프레젠테이셔널 컴포넌트는 UI를 렌더링 하는 역할을 합니다. 이로써 코드를 더 쉽게 이해하고 효율적으로 관리할 수 있습니다.

// Container Component
class UserContainer extends Component {
  state = {
    user: null,
    loading: true,
  };

  componentDidMount() {
    // 데이터 로딩 로직
  }

  render() {
    return (
      <UserPresenter user={this.state.user} loading={this.state.loading} />
    );
  }
}

// Presentational Component
const UserPresenter = ({ user, loading }) => {
  if (loading) {
    return <LoadingSpinner />;
  }

  if (!user) {
    return <ErrorMessage message="User not found" />;
  }

  return <UserProfile user={user} />;
};

결론

React 애플리케이션을 설계하고 구조화할 때, 단일 책임 원칙 및 컴포넌트 분리 원칙을 염두에 두어야 합니다. 이를 통해 코드의 가독성, 유지보수성, 그리고 확장성을 향상시킬 수 있으며, 런타임 성능도 최적화할 수 있습니다.

React Components React Composition Patterns