Как посчитать разницу между предыдущим значением и новым значением, которое изменяется из store?

Данные из хранилища в компоненте появляются таким образом:
computed: {
        ...mapGetters('currency', {
          trades:'getTrades',
          totalBuyQuantity:'getTradesTotalBuyQuantity',
          totalSellQuantity:'getTradesTotalSellQuantity'
        })
      },

Я пытаюсь сделать так, чтобы у меня в переменной хранилась разница между двумя значениями totalBuyQuantity (предыдущим и новым обновленным из store). Я попробовал сделать так:

data: function () {
        return {
          id: null,
          buy_difference: null,
          sell_difference: null,
          prevTotalBuyQuantity:null,
          prevTotalSellQuantity:null
        }
      },


В mounted() я устанавливаю значения :
this.prevTotalBuyQuantity = this.totalBuyQuantity;
          this.prevTotalSellQuantity = this.totalSellQuantity;

А в beforeUpdate(), когда данные уже у нас новые, пытаюсь сделать следующее:
this.buy_difference = this.totalBuyQuantity - this.prevTotalBuyQuantity;
        this.sell_difference = this.totalSellQuantity - this.prevTotalSellQuantity;

Но в итоге выводится не разница, а просто текущее значение показателя, видимо у меня просто все время обнуляется предыдущее значение. Как можно правильно посчитать разницу между текущим показателем и предыдущим? Не хотелось бы писать для этого отдельный геттер.
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
в итоге выводится не разница, а просто текущее значение показателя

Что, наверное, совсем неудивительно - не вижу, чтобы вы обновляли предыдущее значение после вычисления разницы. Оно у вас изначально нулевое, надо полагать - ну вот постоянно и вычисляете разницу с нулём.

А вообще, хранить предыдущее значение необходимости нет:

watch: {
  totalBuyQuantity(newVal, oldVal) {
    this.buyDiff = newVal - oldVal;
  },
},
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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