阅读 2042

Vue 中 computed 计算属性的应用场景

计算属性是 Vue 组件的一个重要内容,它具有 分离逻辑缓存值双向绑定 等作用或功能。

分离逻辑

需求如下:

// 给定文本 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 选项内,模板更干净了:

缓存值

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

双向绑定

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

文章分类
前端
文章标签