[리팩토링]_리액트 컴포넌트의 세련된 리팩토링: Dialog와 SpeedDial 컴포넌트

hanseungjune·2023년 8월 10일

리팩토링

목록 보기
20/25
post-thumbnail

왜 이렇게 고쳤는가?

  • 컴포넌트 분리: Dialog 컴포넌트와 SpeedDial 컴포넌트를 분리하여 각 컴포넌트의 책임을 명확하게 만듭니다.
  • 스타일 리팩토링: 인라인 스타일을 줄이고, 재사용 가능한 스타일을 적용함으로써 코드의 유지보수성을 향상시킵니다.
  • 훅 활용: 커스텀 훅 (useTermsContent)을 사용하여 관련 로직을 재사용하고 중복을 제거합니다.

작성 코드 및 설명

Dialog 컴포넌트

Dialog 컴포넌트는 사용자에게 공유 등록에 대한 방법을 보여주는 컴포넌트입니다. 컴포넌트를 분리하여 재사용성을 높였습니다.

export default function Dialog({ termsContent }: any) {
  // ...
  return (
    <dialog
      ref={(ref) => {
        return (dialogRef.current = ref);
      }}
      css={dialog}
      // ...
    >
      {/* ... */}
      <ul>
        {termsContent.map((term:string, index:number) => (
          <li key={index}>{term}</li>
        ))}
      </ul>
      {/* ... */}
    </dialog>
  );
}

UserHomeSpeedDial 컴포넌트

UserHomeSpeedDial 컴포넌트는 사용자에게 빠른 액션을 제공하는 컴포넌트입니다.

export default function UserHomeSpeedDial() {
  const navigate = useNavigate();
  const dialogRef = React.useRef<HTMLDialogElement | any>({});
  const termsContent = useTermsContent();

  const [open, setOpen] = React.useState(false);

  // ...
  return (
    <Box sx={{ height: 0, flexGrow: 1 }}>
      <SpeedDial
        // ...
      </SpeedDial>
      <Dialog termsContent={termsContent} />
    </Box>
  );
}

결론

이 리팩토링을 통해 컴포넌트를 분리하고, 스타일과 훅을 적절히 활용하여 코드의 유지보수성과 가독성을 향상시켰습니다. 이러한 접근은 React에서 효과적인 컴포넌트 설계의 중요성을 강조하며, 재사용성과 확장성을 추구하는 좋은 실천 사례를 제공합니다.

profile
필요하다면 공부하는 개발자, 한승준

0개의 댓글