Моя проблема в том, что всякий раз, когда изменяется состояние, геттеры не меняются вообще. Я предполагаю, что из-за геттеров не удалось обнаружить изменения в массиве?
Код Vuex
// State - Basic data for the cart
export const state = () => ({
cart: [{ _id: 1, price: 1000} , {_id: 2, price: 2000 } , { _id: 3, price: 222}],
});
//Mutations - Find the product with same id and change the price
export const mutations = () = ({
changePrice(state, { id, newPrice }) {
const cartProduct = state.cart.find(item => item._id === id);
cartProduct.price = newPrice
}
})
// Getters - Get all price and combine it so - 1000 + 2000 + 222 = 3222
export const getters = {
cartTotalPrice(state) {
return state.cart.reduce((total, product) => {
return total + product.price;
}, 0);
},
}
Price.vue
<template>
<!-- Basic input with type number and button to do an action -->
<div>
<input type="number" v-model="price" />
<button @click="onChangePrice">
<h3>{{ cartTotalPrice }}</h3>
</div>
</template>
<script>
export default {
data() {
return { price: 0 }
}
computed: {
...mapGetters(['cartTotalPrice'])
},
methods: {
onChangePrice() {
this.$store.commit('changePrice', {_id: 1, newPrice: this.price });
}
}
}
</script>
Любые предложения о том, как продолжать получать реактивные геттеры, я должен заменить массив?