@architawr
"Ok, Google" и все твои проблемы решены

Возможно ли безболезненно изменять наблюдаемое свойство в наблюдателе?

Доброго времени суток, столкнулся к проблемой, которую не смог решить сам.

Есть наблюдатель за массивом:
this.$watch(
      'order.items',
      () => {
        this.getCalculation();
      },
      {
        deep: true
      }
    );


order.items представляет собой массив объектов
order.items

items: [
  {
    id: 123,
    price: 213,
    discount: 123,
    quantity: 1
  },
  { ... }
]



В методе getCalculation() через vuex отправляется запрос для получения актуальных цен на item-ы, после чего в order.items перезаписывается цена и скидка.

getCalculation

// http.get('...')
          order.items.map(item => {
            const itemCalc = orderCalc.items.find(
              itemCalc => itemCalc.productId === item.productId
            );

            item.price = itemCalc.price;
            item.discount = itemCalc.priceDiscount;
          });
          commit('setOrder', order);



После этого действие в наблюдателе бесконечно повторяется, что вполне очевидно, но как этого можно избежать? И не совсем ясно, почему наблюдатель триггерит обработчик постоянно, даже, если перезаписываются одинаковые данные?
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы