Vue计算属性缓存(computed) vs 方法

Vue计算属性缓存(computed) vs 方法


实例javascript

<div id="example">
  <p>Original message: "{{ message }}"</p>
  <p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>
var vm = new Vue({
  el: '#example',
  data: {
    message: 'Hello'
  },
  computed: {
    // 计算属性的 getter
    reversedMessage: function () {
      // `this` 指向 vm 实例
      return this.message.split('').reverse().join('')
    }
  }
})
结果:

Original message: "Hello"

Computed reversed message: "olleH"
  • 上述方法是经过computed达到翻转字符串的功能,可是咱们能够经过在表达式中调用方法来达到一样的效果:
<p>Reversed message: "{{ reversedMessage() }}"</p>
// 在组件中
methods: {
  reversedMessage: function () {
    return this.message.split('').reverse().join('')
  }
}
  • 可是不一样之处在于计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会从新求值。这就意味着只要==message==尚未发生改变,屡次访问 ==reversedMessage== 计算属性会当即返回以前的计算结果,而没必要再次执行函数。
  • 这也一样意味着下面的计算属性将再也不更新,由于 Date.now() 不是响应式依赖:
computed: {
  now: function () {
    return Date.now()
  }
}
相关文章
相关标签/搜索