<aside> 💡 JSX 안에서 변수를 선언하는 것은 성능과 가독성 어떻게 고려해야할까?
</aside>
<aside> 💡
useMemo
훅을 사용하여 최적화한다.
</aside>export default function IntakePurposeCards({
item,
mid,
}: {
item: z.infer<typeof NutrientIntakePurposes.findAllV1.outputRs>;
mid: string;
}) {
return (
<Link
className="cursor-pointer text-center font-bold"
href={`/intake-purpose/${item.intake_purpose_id}?mid=${mid}`}
>
<Card
className={`relative flex min-h-40 flex-col items-center justify-center rounded ${item.is_enabled !== IsEnabled.ENABLED ? 'bg-gray-100' : ''}`}
>
<div className="absolute right-2 top-1">
{item.is_enabled === IsEnabled.ENABLED ? (
<Badge variant="activeImpact"></Badge>
) : (
<Badge variant="deActiveImpact"></Badge>
)}
</div>
<div className={cn(`${item.is_enabled !== IsEnabled.ENABLED && 'text-nutrisync-300'}`, 'text-xl md:text-2xl')}>
{item.intake_purpose_name}
</div>
</Card>
</Link>
);
}
위 코드에 대한 코드 리뷰이다.
IntakePurposeCards
컴포넌트의 className
속성에서 조건부 렌더링이 인라인 스타일링으로 사용되고 있습니다.className
으로 통일하여 Tailwind CSS의 유틸리티 클래스를 사용하는 것이 좋습니다. 인라인 스타일링을 최소화하고, 가능한 한 Tailwind CSS의 유틸리티 클래스로 대체합니다.const cardClasses = item.is_enabled !== IsEnabled.ENABLED ? 'bg-gray-100 text-nutrisync-300' : '';
return (
<Card className={`relative flex min-h-40 flex-col items-center justify-center rounded ${cardClasses}`}>
useMemo
훅을 사용하여 최적화할 수 있습니다.