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

Posted

技术标签:

【中文标题】vue.js 是不是更新依赖于方法的计算属性?【英文标题】:Does vue.js update computed properties that depend on methods?vue.js 是否更新依赖于方法的计算属性? 【发布时间】:2018-01-30 22:34:41 【问题描述】:

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

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

现在就我的理解而言,计算属性和方法之间的区别在于,计算属性被缓存并且只有在它们的依赖项(例如,普通属性)发生变化时才会重新计算,而方法每次都会被完全计算。

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

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

但是,不同之处在于计算属性是根据它们的依赖关系缓存的。计算属性仅在其某些依赖项发生更改时才会重新评估。

【问题讨论】:

【参考方案1】:

答案,其实就连官方指南中的几行代码都隐藏起来了:

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

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

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

我希望这可以帮助那些不想在每次遇到问题时都阅读整个指南,而是更喜欢只使用 google/*** 的人。

【讨论】:

以上是关于vue.js 是不是更新依赖于方法的计算属性?的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 计算属性

Vue.js 计算属性

使用 Vuex 在 Vue.js 中的计算属性上未从观察者更新数据变量

Vue.js计算属性不更新

简单的 Vue.js 计算属性说明

vue.js中的计算属性(computed)methodswatched三者的区别