🐣 [React]複数のチェックボックス
作成日: 2022/02/17
5

複数のチェックボックスをコンポーネントに置くときにcheckedの監視で少し詰んだのでメモ。

チェックするごとに対象要素のidを配列に出し入れして、
配列内にidがあるかないかでtrue/falseをcheckedに入れるとGOOD

checked={checkedTags.includes(tag.id)}
const [checkedTags, setCheckedTags] = useState<number[]>([])
const handleCheckTag = useCallback(
  (tagId: number) => {
    if (checkedTags.includes(tagId)) {
      setCheckedTags(prev => {
        const index = prev.findIndex(val => val === tagId)
        const newArr = [...prev]
        newArr.splice(index, 1)
        return newArr
      })
    } else {
      setCheckedTags(prev => {
        return [...prev, tagId]
      })
    }
  },
  [checkedTags],
)
{tagList.map((tag, index) => {
  return (
    <STagCheck key={index}>
      <input
        type="checkbox"
        onChange={() => handleCheckTag(tag.id)}
        value={tag.name}
        name={tag.name}
        id={tag.id}
        checked={checkedTags.includes(tag.id)}
      />
      <label htmlFor={tag.id} className={tag.color}>
        {tag.name}
      </label>
    </STagCheck>
  )
})}

制作会社でフロントのコーディングやWordpressのテーマ開発をしてます。 本命はJavascriptです😋 目指せフロントエンドエンジニア👊