Обновляет ли vue.js вычисляемые свойства, зависящие от методов?

поэтому в моем коде у меня есть вычисленное значение today, которое позволяет мне получить доступ к текущему дню, месяцу и году, используя следующий код:

today: function() {
  var currentDate = new Date();
  return {
    day: currentDate.getDate(),
    month: currentDate.getMonth(),
    year: currentDate.getFullYear()
  };
}

Насколько я понимаю, разница между вычисляемыми свойствами и методами заключается в том, что вычисляемые свойства кэшируются и пересчитываются только в том случае, если их зависимости (например, нормальное свойство) меняются, в то время как методы полностью вычисляются каждый раз.

Теперь в моем случае никаких зависимостей нет. Итак, если при инициализации это 24 декабря 2017 года, поздно ночью, и я обращаюсь к today.day через несколько минут, когда наступит 25-е число - будет ли мне присвоено исходное значение или значение будет пересчитано?

Технически никакие свойства не являются зависимостями от этого вычисляемого свойства, поэтому ничего не изменилось. Согласно следующему отрывку из официального руководства, today.day должно по-прежнему равняться 24.

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


person PixelMaster    schedule 22.08.2017    source источник


Ответы (1)


Фактически, ответ даже скрыт в нескольких строках кода в официальном руководстве:

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

computed: {
  now: function () {
    return Date.now()
  }
}

Поэтому в этом или подобных случаях следует использовать методы.

Я надеюсь, что это поможет другим, которые не хотят читать все руководство каждый раз, когда у них возникает вопрос, и вместо этого предпочитают просто использовать google / stackoverflow.

person PixelMaster    schedule 22.08.2017