前提・実現したいこと
現在、apiで取得したデータの数だけ増えていく(データ情報+チェックボックス付きの)がセットになったコンポーネントを作っています。別コンポーネントにあるボタンを押してそのチェックボックスのコンポーネントのチェックが全て選択、解除できるようにしたいと思っております。
文章で説明するのが難しいのでソースコードをご確認いただけたら幸いです。
該当のソースコード
不要な部分は見やすいように記述しておりません。追加の情報が必要でしたらお手数ですがおっしゃってください。
js
1親コンポーネント 2import FrontLayout from "../../components/Templates/frontLyout"; 3import React,{useState} from "react"; 4import FavoriteBuild from "../../components/form/front/favorite-build/favorite-build" 5import UserFavoriteHeader from "../../components/header/user-favorite-header" 6import useSWR from "swr" 7 8export default function Favorite() { 9 const testUrl = '...' 10 const fetcher = url => fetch(url).then(r => r.json()) 11 let data = useSWR(testUrl, fetcher) 12 let newdata = data.data 13 14 return( 15 <> 16 <FrontLayout> 17 <FavoriteBuild newdata={newdata}/> 18 </FrontLayout> 19 ↓↓↓↓↓↓ こちらのコンポーネントにあるボタンを押すとchangeAll関数が呼び出されるとようにしたい 20 <UserFavoriteHeader data={newdata} changeAll={changeAll}} /> 21 </> 22 ) 23}
js
1子コンポーネント 2import FavoritecheckBox from "./favorite-building-check" 3 4export default function FavoriteBuildingBuy(props) { 5 let newdata = props.newdata 6 7 8 return( 9 <> 10 {newdata == undefined ?<p>読込中...</p> 11 : 12 <> 13 {newdata.map((value, idx) => ( 14 <div key={value.title}> 15 <FavoritecheckBox value={value} title={value.title}> 16 ... 17 </FavoritecheckBox> 18 19 </div>))} 20 </> 21 } 22 </> 23 24 ) 25}
js
1孫コンポーネント 2import { useState } from "react" 3export default function FavoritecheckBox(props){ 4 let title = props.title 5 let value = props.value 6 7 return( 8 <> 9 10 <div> 11 <label> 12 ↓↓↓↓↓↓↓↓↓↓対象のチェックボックス 13 <input className="check-box-list" type="checkbox"/> 14 <div>{title}</div> 15 </label> 16 </div> 17 {props.children} 18 19 ) 20}
試したこと
選択肢の数がわかっており同一ページ内の全選択の方法などは調べると出てくるのですが、別コンポーネントで押して対象のチェックボックスを全選択にする方法などが出てきませんでした。ここから全選択できる方法はないのでしょうか?
また、ない場合どういった方法で全選択全解除を実装することができるのでしょうか?お力を貸していただけると幸いです。よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/24 05:30
2021/09/24 05:33
2021/09/24 05:36
2021/09/24 05:37
2021/09/24 06:27
2021/09/24 06:34
2021/09/24 07:13
2021/09/24 08:14
2021/09/25 02:27 編集
2021/09/25 06:39