Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

116
Vistas
Immer no actualiza la propiedad

Estoy usando Redux con Immer. Este es mi código hasta ahora:

 clearMachineState(state, { payload }: ClearMachineStatePayload) { const childrenIds = payload.children.map((child) => child.id); const newMachines = typedMachineState.machine_state.machines.flatMap((machine) => { const tmpMachines: MachineMapping[] = []; childrenIds.forEach((id) => { console.log(id, machine.machine_id); if (id !== machine.machine_id) { const foundMachine = tmpMachines.find( (tmpMachine) => tmpMachine.machine_id === machine.machine_id, ); if (!foundMachine) { tmpMachines.push(machine); } } }); console.log({ tmpMachines }); return tmpMachines; }); console.log({ newMachines }); state.machine_state.machines = newMachines; }

Quiero eliminar de state.machine_state.machines , estas máquinas, que están presentes en payload.children . El problema es que, cuando uso el código anterior, en TS, todo parece estar bien, pero cuando registro {tmpMachines} , veo esto:

 Object { tmpMachines: (1) [… tmpMachines: Array [ Proxy ] 0: Proxy { <target>: null, <handler>: null } length: 1 <prototype>: Array [] <prototype>: Object { … }

Pero si uso la matriz simulada, así:

 const newMachines = typedMachineState.machine_state.machines.flatMap((machine) => {...

Obtengo el objeto real.

Pero de cualquier manera, state.machine_state.machines = newMachines; la asignación no sucede. Lo hace, si trato de hacer un state.machine_state.machines = []; , pero no para mis arreglos creados.

También me gustaría mapear en el estado, no en una fuente externa.

¿Qué me estoy perdiendo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Esto no fue un problema del immer. Este era un problema de lógica. Aquí está el código de trabajo:

 clearMachineState(state, { payload }: ClearMachineStatePayload) { const childrenIds = payload.children.map((child) => child.id); const newMachines: MachineMapping[] = []; typedMachineState.machine_state.machines.forEach((machine) => { if (!childrenIds.includes(machine.machine_id)) { newMachines.push(machine); } }); state.machine_state.machines = newMachines; },
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda