
Luis Felipe Guarin Pastrana
PreguntaPorque me sale este error??
"Write operation failed: computed value is readonly"
Ayudaaa!!
const{ createApp, ref, reactive, toRefs, watch, computed } = Vue; const app = createApp({ setup() { const products = ref([ { name: "Camara", price: 450_000, stock: 3, content: `Lorem ipsum dolor sit amet consectetur adipisicing elit. Deserunt atque dolorum corporis, reiciendis eaque temporibus quod magnam amet ea natus delectus? Aut placeat ipsam minus labore voluptas. Porro, vel aliquid!`, images: [ { image: "./img/camara.jpg", thumbnail: "./img/camara-thumb.jpg" }, { image: "./img/camara-2.jpg", thumbnail: "./img/camara-2-thumb.jpg" } ], offer: true, new: true, quantity: 1 }, { name: "Microfono", price: 950_000, stock: 3, content: `Lorem ipsum dolor sit amet consectetur adipisicing elit. Deserunt atque dolorum corporis, reiciendis eaque temporibus quod magnam amet ea natus delectus? Aut placeat ipsam minus labore voluptas. Porro, vel aliquid!`, images: [ { image: "./img/camara.jpg", thumbnail: "./img/camara-thumb.jpg" }, { image: "./img/camara-2.jpg", thumbnail: "./img/camara-2-thumb.jpg" } ], offer: true, new: true, quantity: 1 }, { name: "Camara PL", price: 250_000, stock: 2, content: `Lorem ipsum dolor sit amet consectetur adipisicing elit. Deserunt atque dolorum corporis, reiciendis eaque temporibus quod magnam amet ea natus delectus? Aut placeat ipsam minus labore voluptas. Porro, vel aliquid!`, images: [ { image: "./img/camara.jpg", thumbnail: "./img/camara-thumb.jpg" }, { image: "./img/camara-2.jpg", thumbnail: "./img/camara-2-thumb.jpg" } ], offer: true, new: true, quantity: 1 }, { name: "Audifonos PL", price: 750_000, stock: 5, content: `Lorem ipsum dolor sit amet consectetur adipisicing elit. Deserunt atque dolorum corporis, reiciendis eaque temporibus quod magnam amet ea natus delectus? Aut placeat ipsam minus labore voluptas. Porro, vel aliquid!`, images: [ { image: "./img/camara.jpg", thumbnail: "./img/camara-thumb.jpg" }, { image: "./img/camara-2.jpg", thumbnail: "./img/camara-2-thumb.jpg" } ], offer: true, new: true, quantity: 1 } ]); const cartState = reactive({ cartOpen: false, cart: [], total: computed(()=> { return cartState.total = cartState.cart.reduce((prev, curr) => { const prevPrice = prev.price || prev; const prevQuantity = prev.quantity || 1; return prevPrice * prevQuantity + curr.price * curr.quantity; }, 0); }) /* total: 0 */ }); /* const total = computed(()=>{ return cartState.total = cartState.cart.reduce((prev, curr) => { const prevPrice = prev.price || prev; const prevQuantity = prev.quantity || 1; return prevPrice * prevQuantity + curr.price * curr.quantity; }, 0); }) */ function addToCart(product) { const prodIndex = cartState.cart.findIndex(prod => prod.name === product.name); if (prodIndex >= 0) { cartState.cart[prodIndex].quantity += 1; } else { cartState.cart.push(product); } product.stock -= 1; } /* watch(cartState.cart, (value, oldValue) => { cartState.total = cartState.cart.reduce((prev, curr) => { const prevPrice = prev.price || prev; const prevQuantity = prev.quantity || 1; return prevPrice * prevQuantity + curr.price * curr.quantity; }, 0); }) */ return { ...toRefs(cartState), addToCart, products }; } });

Cristhian Daza
El código lo veo igual al del profesor, seria mirar el código donde se esta renderizando la propiedad computed