Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

170
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda