Доброго времени суток, столкнулся к проблемой, которую не смог решить сам.
Есть наблюдатель за массивом:
this.$watch(
'order.items',
() => {
this.getCalculation();
},
{
deep: true
}
);
order.items представляет собой массив объектов
order.itemsitems: [
{
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);
После этого действие в наблюдателе бесконечно повторяется, что вполне очевидно, но как этого можно избежать? И не совсем ясно, почему наблюдатель триггерит обработчик постоянно, даже, если перезаписываются одинаковые данные?