美文网首页Vue
深入了解vue的计算属性

深入了解vue的计算属性

作者: Lia代码猪崽 | 来源:发表于2018-08-16 15:04 被阅读6次

    一、为什么使用计算属性

    模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如:

    <div id="example">
      {{ message.split('').reverse().join('') }}
    </div>
    

    在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要显示变量message的翻转字符串。当你想要在模板中多次引用此处的翻转字符串时,就会更加难以处理。

    所以,对于任何复杂逻辑,你都应当使用计算属性。

    二、计算属性的缓存 vs 方法

    • 我们可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的依赖进行缓存的。只在相关依赖发生改变时它们才会重新求值。
    • 这就意味着只要 某个属性的值还没有发生改变,多次访问计算属性会立即返回之前的计算结果,而不必再次执行函数。
    • 相比之下,每当触发重新渲染时,调用方法将总会再次执行函数。
    • 我们为什么需要缓存?假设我们有一个性能开销比较大的计算属性 A,它需要遍历一个巨大的数组并做大量的计算。然后我们可能有其他的计算属性依赖于 A 。如果没有缓存,我们将不可避免的多次执行 A 的 getter!

    如果你不希望有缓存,请用方法来替代。

    三、计算属性 vs 监听属性

    Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性。当你有一些数据需要随着其它数据变动而变动时,你很容易滥用watch——特别是如果你之前使用过AngularJS。然而,通常更好的做法是使用计算属性而不是命令式的watch回调。

    参考资料

    Vue.js官方文档

    相关文章

      网友评论

        本文标题:深入了解vue的计算属性

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