es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    import React, { useState } from "react";
    
    const Riddles = () => {
    
      const [selectedOption, setSelectedOption] = useState(null);
    
      const options = ['Un nieto', 'Una hija', 'Un padre', 'Un sobrino'];
    
      const handleOptionClick = (index) => {
        setSelectedOption(index);
      }
    
      return (
        <div>
          {options.map((option, index) => (
            <div key="{index}">
              <input type="checkbox" checked="{selectedOption" =="=" index}="" onclick="{()="> handleOptionClick(index)}
              />
              {option}
            </div>
          ))}
        </div>
      )
    }
    
    export default Riddles;
    
    

    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 arreglo options. En la función handleOptionClick, actualizamos la variable de estado selectedOption con el índice de la opción seleccionada.

    En el elemento input, establecemos la propiedad checked en true si el índice de la opción actual coincide con la variable de estado selectedOption. 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.

Comments are closed.