마지막 요소에만 border 빼기

강연주·2025년 7월 3일

📚 TIL

목록 보기
172/186
  1. 방법 1: index를 사용한 조건부 클래스 (추천)
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가 사라집니다!

profile
아무튼, 개발자

0개의 댓글