라디오(Radio) 버튼이 만들어졌다

Sheryl Yun·2022년 10월 31일
0

프로젝트 사이드바에서 여러 개가 클릭되는 checkbox를 구현하는 도중에 어쩌다보니 하나만 클릭되는 Radio 버튼이 만들어졌다.

export const Sidebar = () => {
  const [clickedIndex, setClickedIndex] = useState<number>();

  return (
    <div className={styles.wrapper}>
      <div className={styles.title}>카테고리</div>
      <ul className={styles.list}>
        {CATEGORY.map(({ name, id }) => {
          return (
            <li
              key={id}
              className={styles.listItem}
              onClick={() => setClickedIndex(id)}
            >
              {clickedIndex === id ? ( // 이부분 때문에 id와 일치하는 단 하나만 체크 선택이 된다
                <div className={styles.checkedBox}>
                  <Checkbox />
                </div>
              ) : (
                <div className={styles.checkbox}></div>
              )}
              <p>{name}</p>
            </li>
          );
        })}
      </ul>
    </div>
  );
};

checkbox를 구현하려면 선택된 아이템들의 index를 배열로 저장해야 한다는 것까지는 기억해냈는데 타입스크립트다보니 아무 거나 순순히(?) 허락해주지 않는다.

배열에서 index를 넣고 빼는 것도 고민이었는데 방금 이 글을 쓰다가 jsx 내부가 아닌 '함수'를 사용하면 dataset을 인식시키는 코드를 사용할 수 있지 않을까 하는 생각이 떠올랐다.

profile
데이터 분석가 준비 중입니다 (티스토리에 기록: https://cherylog.tistory.com/)

0개의 댓글