У меня есть кнопка «Добавить в корзину», которая запускает действие магазина Vuex:
<button
@click="addToBasket(item)"
>
Add To Basket
</button>
Магазин Vuex:
const actions = {
addToBasket({ commit }, item) {
commit("setBasketItems", item);
}
};
const mutations = {
setBasketItems: (state, item) => {
let basketFind = state.basket.find(i => {
return i.id === item.id;
});
if (basketFind) {
basketFind.quantity += 1;
return;
}
item.quantity = 1;
state.basket.push(item);
}
};
const state = {
basket: []
};
const getters = {
basketItems: state => state.basket,
};
Когда я проверяю магазин Vuex в dev tools, это делать то, что должен, т.е. добавлять элемент, если он не существует, увеличивать количество, если он есть.
Я пытаюсь обновить DOM, чтобы отобразить количество элемента:
computed: {
computedBasketItems: function() {
return this.$store.getters.basketItems;
}
},
<CartItem
v-for="item in computedBasketItems"
:key="item.id"
:item="item"
/>
CartItem (принимает элемент в качестве реквизита):
<div class="dropdown-item">
<i class="fa fa-times-circle"></i>
<router-link to="">{{ item.name }}</router-link>
<p>{{ item.quantity }}x</p>
<p>{{ item.price }}</p>
</div>
// props...
props: ["item"],
Добавляет элемент в DOM и устанавливает количество в «1», но не обновляет количество при его изменении.
Как я могу это сделать?