Décochez plusieurs cases dans le groupe de cases à cocher à l'aide des hooks React
P粉008829791
2023-08-30 13:23:32
<p>J'ai exécuté plusieurs cases à cocher dans plusieurs groupes de cases à cocher. Je n'arrive pas à comprendre comment décocher (changeant ainsi l'état) une case à cocher spécifique. Pour une raison quelconque, je ne peux pas accéder à <code>e.target.checked</code>. </p>
<pre class="brush:php;toolbar:false;"><case à cocher
taille = "petit"
nom={article}
valeur={article}
vérifié={checkboxvalues.includes(item)}
onChange={(e) => handleOnChange(e)}
/></pré>
<p>et mes fonctions</p>
<pre class="brush:php;toolbar:false;">const handleOnChange = (e) =>
const check = e.target.checked;
setChecked(!vérifier);
};</pré>
<p>J'ai créé un exemple fonctionnel du composant dans <strong>ce bac à sable</strong>. </p>
Voici comment j'ai procédé : https://codesandbox.io/s/elastic-pateu-flwqvp?file=/components/Selectors.js
J'ai résumé la logique de sélection dans une clé
useSelection()
自定义钩子,这意味着当前选择可以在store[key].selected
中找到,其中key
可以是selectors
any.Chaque
useSelection()
调用中的items
、selected
、setSelected
和sectionLabel
都存储在store[key]
中,并传递给一个<CustomCheckboxGroup />
composant.La partie pertinente est supprimée de la valeur
handleCheck
函数,它根据先前选择的值设置新的选择:如果当前item
包含在先前的selected
au sein du composant. Sinon, ajoutez-le.Explication plus détaillée (pourquoi)
En regardant attentivement votre code, il semble que vous ne compreniez pas comment fonctionne le composant case à cocher dans React.
input
的checked
属性由一个boolean
Contrôle du statut. Exemple générique :À chaque rendu, l'événement
<input />
的checked
值根据checked
状态的当前值设置。当输入的checked
发生变化(用户交互时),状态不会自动更新。但是onChange
est déclenché et nous l'utilisons pour mettre à jour l'état à la valeur négative de la valeur précédente de l'état.Lorsque nous traitons du composant
utiliser une seule valeur booléenne pour contrôler<CheckboxList />
, nous<CheckboxList />
组件时,我们不能使用单个布尔值来控制所有复选框,我们需要为正在渲染的每个复选框设置一个布尔值。因此,我们创建一个selected
数组,并将每个<input />
的checked
值设置为selected.includes(item)
的值(返回一个boolean
ne pouvons pastoutes les
em>Chacune la case à cocherdéfinit une valeur booléenne. Par conséquent, nous créons un tableauonChange
事件中更新selected
数组的值。我们检查item
是否包含在先前版本的selected
cases à cocher, nous devonsselected
et définissons la valeurchecked
de chaque<input />
surselected.includes La valeur de (item)
(renvoie unbooléen
).Vous devez créer une fonction handleOnChange spécifique pour chaque groupe. J'ai créé une fonction similaire pour le groupe de cases à cocher Genre et vous pouvez la créer pour d'autres groupes de la même manière.
C'est la fonction de traitement.
Transmettez cette fonction comme attribut handleOnChange à CustomCheckboxGroup comme indiqué ci-dessous.
Pour tester, commentez votre fonction handleOnChange.
Afficher la solution de travail complète dans le bac à sable - Code complet