HOC(고차 컴포넌트)가 무엇인가요?

0

기술면접 - React

목록 보기
14/36

HOC(고차 컴포넌트)가 무엇인가요?

HOC(고차 컴포넌트)의 개념

HOC(고차 컴포넌트, Higher-Order Component)는 React에서 컴포넌트 로직을 재사용하기 위해 사용되는 디자인 패턴입니다. HOC는 함수로 구현되며, 인자로 컴포넌트를 받아 새로운 컴포넌트를 반환하는 방식으로 동작합니다.

HOC는 기존 컴포넌트를 래핑하고, props를 조작하거나 새로운 props를 추가하여 컴포넌트를 확장하는 역할을 합니다. 이를 통해 여러 컴포넌트에서 공통적으로 사용되는 로직을 한 곳에 추상화하고, 코드의 재사용성과 가독성을 높일 수 있습니다.

HOC의 사용 예시

HOC의 예시를 살펴보겠습니다. 아래의 예시는 인증(Authentication) 기능을 구현한 HOC입니다:

function withAuth(WrappedComponent) {
  return function WithAuth(props) {
    if (props.isAuthenticated) {
      return <WrappedComponent {...props} />;
    } else {
      return <p>Please log in to access this component.</p>;
    }
  };
}

// 사용 예시
const Profile = (props) => {
  return <div>Welcome, {props.username}!</div>;
};

const AuthenticatedProfile = withAuth(Profile);

위의 예시에서 withAuth 함수는 WrappedComponent라는 인자로 컴포넌트를 받습니다. 그리고 인증 여부를 확인하여 인증된 경우에는 WrappedComponent를 반환하고, 인증되지 않은 경우에는 로그인 메시지를 표시하는 컴포넌트를 반환합니다.

withAuth(Profile)Profile 컴포넌트를 래핑하여 인증이 필요한 경우에만 해당 컴포넌트를 렌더링하는 AuthenticatedProfile 컴포넌트를 생성합니다. 이렇게 하면 인증이 필요한 여러 컴포넌트에서 중복된 인증 로직을 작성하지 않고도 코드를 재사용할 수 있습니다.

HOC의 장단점

HOC는 코드 재사용성과 추상화를 통해 컴포넌트의 기능을 확장하는 데 유용한 패턴입니다. 그러나 HOC를 남용하면 컴포넌트 계층 구조가 복잡해질 수 있으므로 적절하게 사용하는 것이 중요합니다.

profile
지치지 않는 백엔드 개발자 김성주입니다 :)

1개의 댓글

comment-user-thumbnail
2024년 3월 21일

안녕하세요! 좋은 내용의 게시글을 올려주셔서 감사합니다
한가지 궁금점이 있어 댓글 남깁니다!
디자인 패턴이 여러가지가 있는것으로 아는데, 혹시 관례적으로 한가지 디자인패턴을 고수하여 개발을 진행하는지, 아니면 상황에 따라 다른 디자인 패턴을 혼용하여 사용할수도 있는지 궁금합니다!

답글 달기