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

89
Views
Reaccionar SetState sin agregar nuevos objetos a la matriz de objetos

Se supone que este código agrega nuevas tareas al estado y mantiene los objetos anteriores, las publicaciones anteriores sobre esto han llevado al mismo problema de que simplemente no se agregará.

 function App() { var [tasks, setTasks] = useState([ { id: uuidv4(), text: 'Meeting at place', specify: 'todo', }, { id: uuidv4(), text: 'Shopping', specify: 'inprogress', }, { id: uuidv4(), text: 'Appointment', specify: 'complete', }, ]) //Add Task const newTask = (text) => { const id = uuidv4(); var specify = 'todo' const makeTask = { id, ...text, specify } console.log(makeTask) console.log([...tasks, makeTask]) setTasks(tasks => [...tasks, makeTask]) console.log(tasks) }

cuando registro lo que hay dentro de la función de configuración, muestra los 4 pero no se guarda en las tareas

Mi función de arrastrar y soltar, que filtra por ID, funciona con los objetos literales predefinidos, pero no con las nuevas tareas añadidas, y en su lugar devuelve indefinido con nuevas tareas.

Editar: useEffect fue la solución para mostrar correctamente mi estado para aquellos con el mismo problema. Mi problema era más complejo debido a que reaccioné dnd y encontré una solución aquí React Hooks: ¿No se puede acceder a la variable useState actualizada fuera de useEffect? .

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

0

El gancho React setState se ejecuta de forma asíncrona, por lo que después de la actualización, no puede acceder al estado actualizado en esa función. si desea acceder a las tareas actualizadas, puede usar useEffect hook:

 const newTask = (text) => { const id = uuidv4(); var specify = 'todo' const makeTask = { id, text, specify } setTasks(tasks => [...tasks, makeTask]) } useEffect(() => { console.log(tasks); }, [tasks]);
about 4 years ago · Juan Pablo Isaza Report

0

Es posible que desee darle una oportunidad a use-immer para manejar los estados de objetos/matrices.

El gancho useImmer se comporta igual que el gancho useState y actualiza los estados de su objeto sin problemas.

Este es su código a continuación pero con useImmer

 import { useImmer } from "use-immer"; function App() { const [tasks, updateTasks] = useImmer([ { id: uuidv4(), text: 'Meeting at place', specify: 'todo', }, { id: uuidv4(), text: 'Shopping', specify: 'inprogress', }, { id: uuidv4(), text: 'Appointment', specify: 'complete', }, ]) //Add Task const newTask = (text) => { const id = uuidv4(); const specify = 'todo' const makeTask = { id, ...text, specify } updateTasks(draft => draft.push(metaTask)); } }
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!