実現したいこと
<button>をクリックしたら、クリックした<button>の要素を取得したい
例)
<button id ="1">りんご</button>をクリックしたら<button id ="1"></button>を取得
<button id ="2">みかん</button>をクリックしたら<button id ="2"></button>を取得
<button id ="3">いちご</button>をクリックしたら<button id ="3"></button>を取得
使用するコード
jsx
1const fruits= [ 2 { id: 1, value: 'りんご' }, 3 { id: 2, value: 'みかん' }, 4 { id: 3, value: 'いちご' }, 5]; 6 7export const Fruits = () =>{ 8 9 //配列の個数のRefを作成 10 const listRefs = useRef([]); 11 fruits.forEach((_, i) => { 12 listRefs.current[i] = createRef(); 13 }); 14//ボタンをクリックして確認 15 const toggleClassBtn = () => { 16 console.log(listRefs.current); 17 }; 18 19 return( 20 <> 21 {fruits.map((fruit, index) => { 22 return ( 23 <button 24 key={fruit.id} 25 className={styles.fruitsStyle} 26 onClick={toggleClassBtn} 27 id={fruit.id} 28 ref={listRefs.current[i]} //生成したrefを定義 29 > 30 {fruit.value} 31 </button> 32 ); 33 })} 34 </> 35 36) 37 38} 39
試したこと
まず、クリックしたボタンタグを取得するためにuseRefを使って、要素を取得するようにしました。
今回は、<button>タグをmapで回しているので fruits配列分 ref属性を作成ました。
ref属性を定義することで、冒頭で記述した idが〇〇だったら 〇〇クラスを付与する という処理を行うことできると思いましたので定義をしております。
確認用でbuttonタグを押した時にconsoleで結果を出力しました。
上手く取得できてます。
躓いていること
ブラウザで表示している<button>タグどれを押しても、出力される結果が前項で添付させていただきました
結果になってしまい、どのようにしたらクリックしたボタンのidに合わせて<button>タグを取得することができるようになるか分からず手が止まってしまっております。
補足情報
<button>タグはmapで回して出力する
どなたかお詳しい方がいらっしゃいましたら、ご教示いただけますと幸いです。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/23 07:39
2022/12/23 07:42
2022/12/23 07:43
2022/12/23 07:44
2022/12/23 07:51
2022/12/23 08:02