vue.js是否更新依赖于方法的计算属性?

时间:2017-08-22 14:56:59

标签: methods vue.js vuejs2 vue-component computed-properties

所以在我的代码中,我有一个计算值today,允许我使用以下代码访问当前日期,月份和年份:

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

现在据我所知,计算属性和方法之间的区别在于计算出的props被缓存,只有在它们的依赖关系(例如,普通属性)发生变化时才重新计算,而每次都完全计算方法。

现在在我的情况下,没有依赖关系。因此,如果在初始化时,它是2017年12月24日,深夜,几分钟后我访问today.day当它是25日时 - 我将获得原始值还是重新计算该值?

从技术上讲,没有属性是此计算属性的依赖项,因此没有任何更改。根据官方指南中的以下摘录,today.day应该仍然等于24

  

然而,不同之处在于计算属性是根据其依赖性进行缓存的。计算属性仅在其某些依赖项发生更改时才会重新计算。

1 个答案:

答案 0 :(得分:1)

事实上,答案实际上甚至隐藏在官方指南中的几行代码中:

  

这也意味着以下计算属性永远不会更新,因为Date.now()不是一个被动依赖:

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

因此,在这种情况或类似情况下,您应该使用方法。

我希望这可以帮助那些不想在每次有问题时阅读整个指南的人,而是选择使用google / stackoverflow。