Написал такой вот кода в мутации vuex:
ADD_TO_CART: function(state, payload) {
let found = state.cartItems.find(i => i.id == payload.id);
if (found){
found.count = count + payload.count;
}
else {
state.cartItems.push(payload);
}
window.localStorage.setItem('cart', JSON.stringify(state.cartItems));
}
Получаю такую магию: когда в корзине уже есть товар, а надо добавить его количество, то у found.count = payload.count. То есть если до вызова этой функции у found был count = 1, потом вызвать эту функцию с payload.count = 5, то как только начинается функция found.count = 5, а после выполнения строчка found.count += payload.count мы получим found.count = 10. Как это вообще получается ?
Пример(немного изменил код, но результат тот же):
//state.cartItems[index].count = 1, payload.count = 5 (под index подразумевается индекс объекта, который будем менять)
ADD_TO_CART: (state, payload) =>{
//уже тут state.cartItems[index].count = 5, payload.count = 5 (а вот почему - хз)
let index = state.cartItems.findIndex(i => i.id == payload.id);
if (index > -1){
state.cartItems[index].count += payload.count;
//state.cartItems[index].count = 10, payload.count = 5
}
else {
state.cartItems.push(payload);
}
window.localStorage.setItem('cart', JSON.stringify(state.cartItems));
}