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

129
Views
cómo agregar/eliminar datos al estado dependiendo de si la casilla de verificación se marcó y luego se desmarcó

Actualmente estoy tratando de obtener los valores de las casillas de verificación, identificadores, para poder hacer algo de lógica y almacenarlos en una base de datos. Lo que estoy tratando de hacer es algo así como un calendario semanal, y si hace clic en uno, significa que seleccionó ese día, por ejemplo, id: 1 = Sun , pero si lo vuelvo a hacer clic, no quiero que duplique el id, prefiero que no se seleccione el significado, eliminarlo. Esto es lo que hice, incluso intenté usar conjuntos pero no funciona (el conjunto agrega y elimina cosas, pero el problema está claramente en (prev) => [...] ) eso es lo que creo que es lo que estoy haciendo mal, así que creo que solo necesito alguna recomendación sobre cómo hacerlo.

 const [dayId, setDayId] = useState([]); {days.map((day, idx) => ( <input onChange={(e) => { let checked = e.target.value; const values = new Set(); setDays( days.map(data => { if (data.id === day.id) { let value = e.target.value; data.id = value; if(data.select === false) { data.select = true; } else { data.select = false; } } return data; }) ); if(values.has(checked)) { values.delete(checked); } if(e.target.checked === true) { values.add(checked); } if(e.target.value === false) { values.delete(checked); } setDayId(prev => { return [...prev, ...values] }) console.log("CHECKING CHECKED VALUE", e.target.checked); console.log("WHAT IS THE SET VALUE", values) }} key={idx} name={day?.name} type="checkbox" value={day?.id} checked={day.select} /> ))}

En resumen, quiero que esa matriz agregue valores de eliminación dependiendo de si se marcaron y luego se desmarcaron, el set realmente lo hace, pero los valores no se mantienen, por eso hice esto, setDayId(prev => {return [...prev, ...values]}) , pero ahí mismo mantiene los valores y nunca los elimina e incluso los duplica. Cualquier ayuda sería muy apreciada.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Si entiendo su pregunta, básicamente desea agregar la identificación si la checked es verdadera, y eliminar la identificación si la checked es falsa, del estado dayId . En setDayId verifique el valor checked y, si es verdadero, copie superficialmente el estado de dayId y agregue la nueva identificación ( value ), de lo contrario, elimínelo de la matriz de dayId usando una función .filter .

 {days.map((day, idx) => ( <input onChange={(e) => { const { checked, value } = e.target; setDays( days => days.map(data => { if (data.id === day.id) { return { ...data, id: value, select: !data.select, }; } return data; }) ); setDayId(prev => { return checked ? [...prev, value] // add if checked : prev.filter(val => val !== value) // remove if not checked }); console.log("CHECKING CHECKED VALUE", e.target.checked); console.log("WHAT IS THE SET VALUE", values) }} key={idx} name={day?.name} type="checkbox" value={day?.id} checked={day.select} /> ))}
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!