Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

171
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!