
- 컴포넌트 분리: Dialog 컴포넌트와 SpeedDial 컴포넌트를 분리하여 각 컴포넌트의 책임을 명확하게 만듭니다.
- 스타일 리팩토링: 인라인 스타일을 줄이고, 재사용 가능한 스타일을 적용함으로써 코드의 유지보수성을 향상시킵니다.
- 훅 활용: 커스텀 훅 (useTermsContent)을 사용하여 관련 로직을 재사용하고 중복을 제거합니다.
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 컴포넌트는 사용자에게 빠른 액션을 제공하는 컴포넌트입니다.
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에서 효과적인 컴포넌트 설계의 중요성을 강조하며, 재사용성과 확장성을 추구하는 좋은 실천 사례를 제공합니다.