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

145
Views
Método JS vinculado esto se refiere a la versión anterior

Sé que probablemente podría haber una mejor manera de hacer esto, pero quiero entender cómo resolver este tipo de problema. Tengo dos clases, Parent e Child . Parent tiene una variedad de niños.

Creé los métodos addChild y removeChild que me permiten crear un Child y eliminarlo y ambos me devuelven el objeto Parent actualizado (lo necesito porque actualizará una variable de estado de React en otro lugar)

Quiero pasar a cada hijo un método "eliminar" para eliminarlo de su padre. Esto realmente funciona bien en un padre preestablecido con hijos. Pero si agrego muchos hijos y luego trato de eliminar uno, cada vez que vuelvo a la condición inicial (digamos, Parent inicialmente tiene 4 hijos, agrego 3 más, ahora son 7. Elimino uno y vuelvo a 4 .).

Creo que esto sucede porque cuando le paso el controlador al objeto Child que estoy creando en addChild , la función removeChild que incrusto en el objeto child no se actualiza y se refiere a la versión inicial del objeto Parent , pero no sé cómo para arreglar esto.

Adjunto aquí un pseudocódigo, solo para dar una idea del problema.

Cualquier ayuda sería apreciada.

 import _ from "lodash"; class Parent{ constructor(){ this.removeChild.bind(this); } children: Child[]; addChild(){ const newParent = _.cloneDeep(this); newParent.children = [ ...newParent.children, new Child({remove: this.removeChild}) ] return newParent; } removeChild(child){ const newParent = _.cloneDeep(this); newParent.children = newParent.filter(child => (child.id != child.id)); return newParent; } } class Child{ id; remove(); constructor({remove}){ this.id = automaticgenerated this.remove = remove } }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

¿Te refieres a algo como esto?

 class Parent { constructor() { this.children = []; } addChild(child) { child.parent = this; this.children.push(child); return this; } removeChild(child) { child.parent = null; this.children = this.children.filter(c => c.id != child.id); return this; } } class Child { constructor() { this.parent = null; this.id = Math.random(); //Fake auto generated id } remove() { this.parent.removeChild(this); this.parent = null; } } const p = new Parent(); const c1 = new Child(); const c2 = new Child(); console.log(p.addChild(c1)); console.log(p.addChild(c2)); console.log(p.removeChild(c2)); c1.remove(); console.log(p);

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!