Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

163
Vistas
¿Cómo puedo crear estados para los booleanos de casilla de verificación utilizados en una lista de tareas pendientes que el usuario puede agregar o eliminar elementos?

Creé una lista de tareas pendientes para mi sitio donde el usuario puede agregar y eliminar elementos pendientes y estoy tratando de hacerla para que puedan marcar o desmarcar los elementos según lo necesiten.

En este momento, la capacidad de agregar/eliminar funciona bien y las casillas de verificación actualizan la base de datos cuando se hace clic en ellas como se supone que deben hacerlo, pero el problema es que las casillas de verificación no se actualizan correctamente en el sitio web.

El estado es una matriz de información de elementos pendientes de la base de datos. Entonces, inicialmente, el estado se establece como la información actual de la base de datos:

 const [items, setItems] = useState(todo_items)

donde todo_items es de la base de datos y está estructurado así:

 ``` 0: complete: 0 or a 1 todo_id: Integer todo_item: String 1: complete: 0 or a 1 todo_id: Integer todo_item: String . . . ```

Ahora, una vez que esto se establece como el estado, asigno los elementos pendientes a un formulario:

 <form> {items.map((e) => ( <div id={e.todo_id}> <div> <input type="checkbox" checked={e.complete === 1} onChange={(f) => checkHandler(f.target.checked, e.todo_id)} /> <p>{e.todo_item}</p> </div> </div> ))} </form>

y luego, cuando se marca una casilla de verificación, cambio el estado y actualizo la base de datos para reflejar la nueva representación de todas las casillas de verificación

 async function checkHandler(checked, todo_id){ var updated_todo = items for (var i = 0 ; i < items.length ; i++){ if (items[i].todo_id === todo_id && checked === true) { updated_todo[i].complete = 1; } else if (items[i].todo_id === todo_id && checked === false){ updated_todo[i].complete = 0; } } setItems(updated_todo) // update database below... }

Pensé que esto actualizaría automáticamente las casillas de verificación en el sitio web cada vez que se actualiza este estado, pero no vuelve a asignar los elementos pendientes en el formulario cuando se cambia el estado de los elementos.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

var updated_todo = items

es una referencia al objeto, por lo que cuando lo cambia también cambia el estado, es por eso que la aplicación no se volverá a procesar cuando establezca el estado

prueba a cambiar eso tambien

 var updated_todo = [...items]
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda