Задать вопрос
@AspMaster

Как обойти эту магию?

Написал такой вот кода в мутации 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));
  }
  • Вопрос задан
  • 134 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Azperin
Дилетант
Я не совсем понял почему у тебя ошибку не выплевывает count is not defined

apples = 5;
basket = 0;

basket = apples; // тупо присваем в корзину яблоки
basket += apples; // прибавляем яблок к тем, что уже есть корзине
basket = basket + apples; // тоже самое что и выше

Да и я логику не совсем понял. Ты в, грубо говоря, общем стейте находишь товар и изменяешь ему каунт, есстественно в следующий раз у тебя этот каунт будет увеличен, потому что ты его в стейте поменял.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы