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

105
Views
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 answers
Answer question

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