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

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

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 Relatório

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 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