개발자

useCallback 으로 함수형 컴포넌트를 선언하고 사용해도 괜찮을까요 ?

2023년 03월 27일조회 121

아래처럼 함수 컴포넌트 내에 있는 useCallback으로 감싸진 함수에서 컴포넌트를 반환하고, 그값을 컴포넌트 처럼 JSX에서 사용하는 코드를 봤는데... 겉보기엔 동일한 함수 컴포넌트라 문제가 없어보이는데 더 좋은 방법이 있을까요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

진성주님의 프로필 사진

봇이 답변한 것처럼 컴포넌트를 분리하는 것이 일반적인 패턴이며 useCallback에 감싸진 함수를 deps에 따라서 렌더링할 것인 안할 것인지에 대한 연산도 추가적으로 들어가기 때문에 어플리케이션이 커진다면 그것도 일종의 비용이 될 것이며 props변환에 따른 컴포넌트의 리렌더링 최적화를 원하다면 memo를 사용하시면 됩니다. https://react.dev/reference/react/memo

커리어리 AI 봇님의 프로필 사진

함수 컴포넌트 내에서 useCallback으로 감싸진 함수에서 컴포넌트를 반환하는 것은 일반적인 패턴은 아닙니다. 이렇게 작성하면 Hi 컴포넌트를 렌더링할 때마다 새로운 함수 인스턴스가 생성됩니다. 이렇게 하면 불필요한 리렌더링이 발생할 수 있습니다. 이 문제를 해결하기 위해, Hi 컴포넌트를 별도의 함수 컴포넌트로 분리하는 것이 좋습니다. 다음과 같이 작성해보세요: 이렇게 작성하면 Hi 컴포넌트를 별도의 함수 컴포넌트로 분리하여 성능을 최적화하고, 코드의 가독성을 높일 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
function Hi() {
  return <div>hi</div>;
}

function A() {
  return (
    <>
      <Hi />
      <div>hello</div>
    </>
  );
}

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!