React でチェックボックスをクリックすると以前の選択がキャンセルされるのはなぜですか?
P粉729198207
P粉729198207 2023-08-13 10:57:24
0
1
635
<p>複数のチェックボックスがあるのですが、1 つのチェックボックスをクリックしてから次のチェックボックスをクリックすると、前のチェックボックスの選択が解除されます。理由はわかりますか? </p> <p>これは私のチェックボックスコンポーネントです: </p> <pre class="brush:php;toolbar:false;">const Checkbox = ({ key, id, label, selected, name, onChange }:any) => { 戻る ( <div className="チェックボックスラッパー"> <複数入力 key={id} id={id} type="checkbox" selected={checked} name={name} onChange={onChange} /> <label htmlFor={id}>{label}</label> </div> ) }</pre> <p>これはメインコンポーネントの外観です。データは配列内にあり、マッピングされていますが、前のチェックボックスの選択が解除される理由がわかりません。他の多くの無駄な JSX コードを削除しました:< ; /p> <pre class="brush:php;toolbar:false;">const checkboxList = [ { ID:0、 ラベル:「大文字」、 名前:「アッパー」、 チェック済み:偽 }、 { ID:1、 ラベル:「小文字」、 名前:「下」、 チェック済み:偽 }、 { ID:2、 ラベル:「番号」、 名前: "番号"、 チェック済み:偽 }、 { ID:3、 ラベル:「シンボル」、 名前: 「シンボル」、 チェック済み:偽 } 】 const PasswordGenerator = () => { const [データ, setData] = useState(checkboxList) const handleChange = (id:number) => { const updateCheckboxes = checkboxList.map((チェックボックス) => checkbox.id === id ? {...チェックボックス、チェック済み: !checkbox.checked}:checkbox) setData(updateCheckboxes) } 戻る ( <div className="要素"> {data.map((obj) => { 戻る( <div key={obj.id}> <チェックボックス 複数={true} id={obj.id} ラベル = {obj.label} チェック済み= {obj.チェック済み} 名前= {obj.name} onChange = {() => handleChange(obj.id)} /> </div> ) })} </div> ) }</pre> <p><br /></p>
P粉729198207
P粉729198207

全員に返信(1)
P粉662361740

状態を更新すると、現在の状態ではなく、元の配列から更新されます。元の配列 (checkboxList) からマッピングする代わりに、状態の現在の値 (データ) からマッピングします:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!