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

149
Views
El valor reactivo esbelto no se actualiza con el cambio de tienda

Hola chicos, tengo este código para verificar si un elemento está seleccionado

 $: checkbox = $chosenPackage.products.find(e => e.id == selectedProduct.product.id && e.name == selectedProduct.product.name)?.variants.some(e => e.id == v.id && e.name == v.name) || false

Yo console.log el resultado y siempre devuelve indefinido, sin embargo, cuando lo ejecuto en la consola (reemplazando todas las tiendas con objetos duplicados) devuelve el valor correcto

Estaba funcionando antes, pero tuve que cambiar la estructura de la tienda y fue entonces cuando dejó de funcionar, el marcado se comporta como se supone que debe (se aplican todas las clases para la checkbox == true ) pero no es reactivo, es decir, cuando elimino una variante de la matriz no elimina las clases, y cuando reviso la tienda veo que la variante se eliminó correctamente,

Cuando los componentes se vuelven a renderizar, todo se ve bien, pero se supone que se vuelve a renderizar automáticamente si la checkbox de verificación cambia y se supone que la checkbox de verificación cambia automáticamente si algo en la tienda cambia pero no lo hace.

cualquier ayuda sera muy apreciada, gracias de antemano

Editar: me acabo de dar cuenta de que en otra parte se actualiza

Aquí está el código que actualiza la tienda en la parte que no funciona

 $chosenPackage.products.find(e => e.id == selectedProduct.product.id && e.name == selectedProduct.product.name).variants = [v]

Así que básicamente estoy sobrescribiendo toda la matriz con la nueva variante seleccionada

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

0

El problema es que está utilizando una invocación de método dentro de su asignación de actualización ( find ). Tan pronto como hay una invocación de método de este tipo, Svelte ya no compila eso en una declaración de "actualización de la tienda" porque no puede saber qué hace ese método y si sería correcto actualizar la tienda. Por lo tanto, utilice el método de update en este caso

 chosenPackage.update(current => { current.products.find(e => e.id == selectedProduct.product.id && e.name == selectedProduct.product.name).variants = [v]; return current; });
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!