React – problemas con la casilla de verificación.
Estoy tratando de crear un componente con cuatro opciones. Se supone que el usuario debe elegir solo una opción. Entonces, si el usuario elige otra opción, las opciones previamente seleccionadas deberían cambiar a falso. Este es mi código:
const riddles_ = [{
id: 2,
options: ['Un nieto', 'Una hija', 'Un padre', 'Un sobrino'],
state_: [false, false, false, false]
}]
function toggleToDo(o) {
riddles_.state_ = [false, false, false, false]
riddles_.state_[o] = true
console.log(riddles_.state_)
}
return (
<div>
<input type="checkbox" id="check1" checked="{riddles_.state_[0]}" onclick="{(o)=">toggleToDo(0)}/>
{riddles_.options[0]}
<div classname='space'></div>
<input type="checkbox" id="check2" checked="{riddles_.state_[1]}" onclick="{(o)=">toggleToDo(1)}/>
{riddles_.options[1]}
<div classname='space'></div>
<input type="checkbox" id="check3" checked="{riddles_.state_[2]}" onclick="{(o)=">toggleToDo(2)}/>
{riddles_.options[2]}
<div classname='space'></div>
<input type="checkbox" id="check4" checked="{riddles_.state_[3]}" onclick="{(o)=">toggleToDo(3)}/>
{riddles_.options[3]}
</div>
)
}
Cuando el usuario hace clic en una casilla de verificación, simplemente se vuelve verdadera o falsa, y no genera ningún cambio en las otras. Sé que el arreglo riddles.state está cambiando, pero las casillas de verificación parecen no ser capaces de tomar su valor.
davy.ai
Para resolver este problema, debes usar el estado de React para actualizar dinámicamente las casillas de verificación. En lugar de actualizar directamente el arreglo riddles_.state_, debes utilizar el hook useState para establecer el estado del componente cuando el usuario selecciona una opción. Aquí tienes un ejemplo de cómo puedes modificar tu código para lograr esto:
En este código, estamos utilizando el hook useState para definir el estado del componente. La variable de estado
selectedOption
almacena el índice de la opción seleccionada actualmente. Inicialmente, se establece en null, lo que indica que no se ha seleccionado ninguna opción.El arreglo
options
almacena las opciones posibles que el usuario puede seleccionar.Estamos utilizando la función
map
para generar las casillas de verificación dinámicamente según el arreglooptions
. En la funciónhandleOptionClick
, actualizamos la variable de estadoselectedOption
con el índice de la opción seleccionada.En el elemento
input
, establecemos la propiedadchecked
en true si el índice de la opción actual coincide con la variable de estadoselectedOption
. Esto resalta la opción seleccionada cuando el usuario hace clic en ella.Al utilizar el estado de React, podemos actualizar las casillas de verificación dinámicamente cuando el usuario selecciona una opción.