什么情况使用计算属性

1、分离逻辑

需求如下:

// 给定文本 text,去除其首尾空白,然后将其反转显示。
// 例:
const text = '花费'
// ==> 花费

不使用计算属性,代码长这样:

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

<script>
export default {
  data: () => ({
    text: '花费'
  })
}
</script>

使用计算属性后,代码长这样:

<template>
  <div id="example">
    {{ normalizedText }}
  </div>
</template>

<script>
export default {
  data: () => ({
    text: ''花费"
  }),
  computed: {
    normalizedText() {
      return this.text.split('').reverse().join('')
    }
  }
}
</script>

显而易见,使用计算属性后,相关逻辑放在了 computed 选项内,模板更干净了

Vue 中我们不需要在 template 里面直接 {{ text.split('').reverse().join('') }}实现该功能,因为在模版中放入太多声明式的逻辑会让模板本身过重,尤其当在页面中使用大量复杂的逻辑表达式处理数据时,会对页面的可维护性造成很大的影响,而 computed 的设计初衷也正是用于解决此类问题。

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

2、缓存值

接上例,如果我们不去改变 text 的值,那么 normalizedText 就不会重新计算,也就是说,normalizedText 会缓存其求值结果,直到其依赖 text 发生改变。我们可以测试一下:

3、双向绑定

我们可以利用计算属性的 getter 和 setter 实现数据的双向绑定:

使用场景:计算属性适合用在模板渲染中,某个值是依赖了其它的响应式对象甚至是计算属性计算而来

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 模板内的表达式常用于简单的运算,当其过长或逻辑复杂时,会难以维护,本章的计算属性就是用于解决该问题的。 什么是计算...
    辽A丶孙悟空阅读 3,207评论 0 13
  • 1、什么事计算属性 在模板中双向绑定一些数据或表达式。但是表达式如果过长,或逻辑更为复杂时,就会变得雕肿甚至难以阅...
    Marshall_Wang阅读 1,864评论 0 1
  • 模板内的表达式常用于简单的运算,当其过长或逻辑复杂时,会难以维护,本章的计算属性就是用于解决该问题的。 3.1-什...
    六个周阅读 4,097评论 2 6
  • 1. 什么是计算属性 我们己经可以搭建出一个简单的 Vue 应用,在模板中双向绑定一些数据或表达式了。但是表达式如...
    养乐多__阅读 12,386评论 0 0
  • Vue 学习笔记入门篇- 计算属性 3.1 什么是计算属性 我们己经可以搭建出一个简单的 Vue 应用,在模板中双...
    hzl的学习小记阅读 906评论 0 0

友情链接更多精彩内容