Estoy tratando de cambiar el valor de isChecked en el estado cuando la casilla de verificación está marcada.
Este es mi estado:
const [talles, setTalles] = useState([ { name: 'S', isChecked: false }, { name: 'M', isChecked: false }, { name: 'L', isChecked: false }, { name: 'XL', isChecked: false }, ]) Para cada elemento en este estado se crea un <input type="checkbox" /> .
La cuestión es que quiero cambiar dinámicamente la propiedad isChecked .
Normalmente haría:
setProduct({ ...product, [e.target.name]: e.target.checked }) Pero eso solo funcionaría si mi estado fuera como useState({ productCheckbox: '' })
Apreciaría tu ayuda. ¡Gracias por adelantado!
Puede mapear el estado anterior y cambiar el valor de la altura cambiante:
setTalles(previousState => previousState.map(talle => { if (talle.name === e.target.name) return ({ ...talle, isChecked: e.target.checked, }) return talle }))O lo mismo pero más corto:
setTalles(previousState => previousState.map(talle => talle.name === e.target.name ? ({ ...talle, isChecked: e.target.checked, }) : talle }))