• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

168
Views
¿Cómo reasignar el método/propiedad del objeto a un nuevo objeto?

Me he topado con algo interesante. Cuando creo un nuevo objeto configurando una nueva clave para un método, no lo maneja correctamente cuando intento acceder a él (usarlo). Por favor, vea el ejemplo a continuación:

 const cases = [ { instance: instance.mydecorator, triggerEffects: useMyDecorator }, ];

entonces quiero recorrer de la siguiente manera:

 cases.forEach(({ instance, triggerEffects }) => { instance = [ Story => { triggerEffects(); return <Story />; }, ]; });

el ejemplo anterior no funciona: instancia != instancia.midecorador, por lo que la matriz no está configurada correctamente.

Lo que funciona es:

 const cases = [ { instance: instance, triggerEffects: useMyDecorator }, ]; cases.forEach(({ instance, triggerEffects }) => { instance.mydecorator = [ Story => { triggerEffects(); return <Story />; }, ]; });

¡Cualquier ayuda para comprender este comportamiento sería apreciada! Gracias

about 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El problema con su código es la desestructuración que está utilizando en los parámetros de entrada de devolución de llamada de foreach: esta parte => cases.forEach(({ instance, triggerEffects })... . Cuando hace esto, desestructura el elemento de la matriz, y cuando mira la declaración de su matriz la instancia apunta a algún otro objeto de instancia, por lo que en destructure { instance, triggerEffects } la instancia apuntará a la instancia del lado derecho de su declaración de matriz: básicamente accedió (marcado con ESTE) a const cases = [ { instance: instance(THIS ONE), triggerEffects: useMyDecorator }, ]; y no el del lado izquierdo como esperabas.

Lo que debe hacer es evitar la desestructuración en este caso, ya que no desea modificar esa instancia del lado derecho, sino el elemento real de la matriz. Hazlo así:

 cases.forEach(element => { element.instance = [ Story => { element.triggerEffects(); return <Story />; }, ]; });
about 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error