実現したいこと
1.配列arr1をmapでliタグとしてHTML出力
2.liタグは最初「?」を表示しているが、クリックすると、クリックされた要素のみ「?」が消え、配列の中身が表示される
const arr1 = [1, 2, 3, 4, 5, 6];
map処理後
↓
? ? ? ? ? ?
二番目の「?」をクリックした場合 五番目の「?」をクリックした場合
↓ ↓
? 2 ? ? ? ? ? ? ? ? 5 ?
現在のコード
import { useState } from "react"; import styles from "./style.module.css"; export const Game = () => { const [none, setNone] = useState(true); const arr1 = [1, 2, 3, 4, 5, 6]; const addNone = () => { setNone(false); }; return ( <div className="game"> {arr1.map((arr, i) => ( <li key={i} onClick={addNone}> ?<span className={none === true ? styles.none : ""}>{arr}</span> </li> ))} </div> ); };
style.module.css .none { display: none; }
現在の状況
mapで配列arr1を<li>で出力し、liタグをクリックするとstateの状態が変わり、その結果、クラスがなくなり、数字が表示されるところまでできました。
しかし、現在のコードだと「?」は残ったままですし、何より<li>をクリックした際に、クリックした要素だけ数字が表示されるのではなく、全ての要素の数字が表示されてしまいます。
どのようにすればクリックした要素のみが数字を表示できるようになるのでしょうか?
stateで状態を管理して三項演算子を使ってクラスの付与をするのは間違いでしょうか?
何卒、よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/23 12:08