tsxreturn (
<>
{myMeetupMembersData.result.map((member: MyMeetupMember, index) => {
const userImageSource = userImages[member.user?.id || 0] || "/profile.png";
const isLastItem = index === myMeetupMembersData.result.length - 1;
return (
<div
key={member.id}
className={`mx-[1rem] my-[1rem] grid grid-cols-[10%_15%_60%_15%] items-center text-base pb-[0.8rem] ${
!isLastItem ? 'border-b-[0.1rem] border-gray-medium' : ''
}`}
>
{/* 나머지 코드... */}
</div>
);
})}
</>
);
방법 2: 템플릿 리터럴로 더 간단하게
tsxreturn (
<>
{myMeetupMembersData.result.map((member: MyMeetupMember, index) => {
const userImageSource = userImages[member.user?.id || 0] || "/profile.png";
return (
<div
key={member.id}
className={`mx-[1rem] my-[1rem] grid grid-cols-[10%_15%_60%_15%] items-center text-base pb-[0.8rem] ${
index < myMeetupMembersData.result.length - 1 ? 'border-b-[0.1rem] border-gray-medium' : ''
}`}
>
{/* 나머지 코드... */}
</div>
);
})}
</>
);
방법 3: clsx나 classnames 라이브러리 사용 (더 깔끔)
tsx// 먼저 설치: npm install clsx
import clsx from 'clsx';
return (
<>
{myMeetupMembersData.result.map((member: MyMeetupMember, index) => {
const userImageSource = userImages[member.user?.id || 0] || "/profile.png";
const isLastItem = index === myMeetupMembersData.result.length - 1;
return (
<div
key={member.id}
className={clsx(
"mx-[1rem] my-[1rem] grid grid-cols-[10%_15%_60%_15%] items-center text-base pb-[0.8rem]",
!isLastItem && "border-b-[0.1rem] border-gray-medium"
)}
>
{/* 나머지 코드... */}
</div>
);
})}
</>
);
방법 4: CSS 선택자 사용 (가장 깔끔하지만 제한적)
<div className="member-list">
{myMeetupMembersData.result.map((member: MyMeetupMember) => {
return (
<div
key={member.id}
className="mx-[1rem] my-[1rem] grid grid-cols-[10%_15%_60%_15%] items-center text-base pb-[0.8rem] border-b-[0.1rem] border-gray-medium last:border-b-0"
>
{/* 나머지 코드... */}
</div>
);
})}
</div>
추천: Tailwind의 last: 수정자를 사용하는 방법 4가 가장 깔끔합니다. last:border-b-0만 추가하면 마지막 요소의 border가 사라집니다!