美文网首页
计算属性与方法

计算属性与方法

作者: 前程明亮 | 来源:发表于2018-12-02 19:30 被阅读10次

一、计算属性缓存 vs 方法

计算属性也可以使用方法,来达到同样的效果
你可能已经注意到我们可以通过在表达式中调用方法来达到同样的效果:

<p>Reversed message: "{{ reversedMessage() }}"</p>

// 在组件中
methods: {
    reversedMessage: function () {
        return this.message.split('').reverse().join('')
    }
}

我们可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。计算属性与方法其实都是一个函数。然而,不同的是计算属性是基于它们的依赖进行缓存的。只在相关依赖发生改变时它们才会重新求值。这就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。直接返回之前的缓存,代码效率也会更高。
这也同样意味着下面的计算属性将不再更新,因为 Date.now() 不是响应式依赖

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

什么是响应式依赖,一般你定义在组件的data() {}中的数据就是响应式的。有时候你发现你定义的计算属性莫名其妙的就是没调用到,很大可能是因为你没用到响应式数据。
相比之下,每当触发重新渲染时,调用方法将总会再次执行函数
我们为什么需要缓存?假设我们有一个性能开销比较大的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性依赖于 A 。如果没有缓存,我们将不可避免的多次执行 A 的 getter!如果你不希望有缓存,请用方法来替代。

二、侦听属性

在前端开发中,我想实现某个变量变化时,就调用相应的方法。vue中的监听属性能实现这个需求。

var vm = new Vue({
  el: '#demo',
  data: {
    firstName: 'Foo'
  },  
  watch: {
    // 有两个参数,变化前,变化后的值
    firstName: function (val) {
      console.log('new val', val)
    }
})

相关文章

  • swift面向对象基础<二>

    存储属性和计算属性 今天讨论实例存储属性与实例变量,结构体常量与实例属性,定义计算属性,setter方法,属性观察...

  • Vue之计算属性computed(一)

    Vue中什么是计算属性computed,计算属性的基础、计算属性computed与方法method实现相同的功能为...

  • 计算属性与方法

    一、计算属性缓存 vs 方法 计算属性也可以使用方法,来达到同样的效果你可能已经注意到我们可以通过在表达式中调用方...

  • 计算属性与方法

    计算属性computed 在一个计算属性里可以完成各种复杂的逻辑,包括运算、函数调用等,最终需返回一个结果。 计算...

  • vue基础

    一、 计算属性与方法比较 计算属性: 方法: 可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确...

  • 属性和方法

    1、属性 存储属性 延迟存储属性 计算属性 只读计算属性 只有 getter 方法但没有 setter 方法的计算...

  • computed深入

    计算属性set/get 计算属性 (单向)在computed属性对象中定义计算属性的方法,在页面使用{{方法名}}...

  • Vue基本语法和生命周期

    计算属性和监视 计算属性在computed属性对象中定义计算属性的方法在页面中使用{{方法名}}来显示计算的结果 ...

  • Vue的基本语法和生命周期

    一、计算属性 计算属性在computed属性对象中定义计算属性的方法在页面中使用{{方法名}}来显示计算的结果 监...

  • Vue的基本语法和生命周期

    一、计算属性 计算属性在computed属性对象中定义计算属性的方法在页面中使用{{方法名}}来显示计算的结果 监...

网友评论

      本文标题:计算属性与方法

      本文链接:https://www.haomeiwen.com/subject/mdhscqtx.html