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
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; });