Обновление объекта в массиве Vuex - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь управлять простой корзиной продуктов. Продукты хранятся в состоянии как массив под названием items

export const state = () => ({
  cart: {
    items: [],
  }
})

Если товар уже добавлен в корзину, и кто-то пытается добавить его снова, я пытаюсь обновить поле quantity

addItem(state, product) {
  let cartProduct = state.cart.items.find((item, index) => {
    return item.id === product.id
  })
  cartProduct.quantity++;
});

Это не работает для меня, так как не обновляет состояние. Кто-нибудь знает хитрость?

1 Ответ

0 голосов
/ 07 ноября 2018

Это проблема реактивности. Вы можете сделать глубокую копию корзины, чтобы сделать магазин реагирующим:

   addItem(state, product) {
      let cartProduct = state.cart.items.find((item, index) => {
        return item.id === product.id
      })
      cartProduct.quantity++;
      state.cart = JSON.parse(JSON.stringify(state.cart))
    });

Другая опция использует Vue.set

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...