当前位置:首页 > 未命名 > 正文

vue3学习笔记之计算属性

基础示例

模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。比如说,我们有这样一个包含嵌套数组的对象:

js
const author = reactive({  name: 'John Doe',  books: [    'Vue 2 - Advanced Guide',    'Vue 3 - Basic Guide',    'Vue 4 - The Mystery'  ]})

我们想根据 author 是否已有一些书籍来展示不同的信息:

template
<p>Has published books:</p><span>{{ author.books.length > 0 ? 'Yes' : 'No' }}</span>

这里的模板看起来有些复杂。我们必须认真看好一会儿才能明白它的计算依赖于 author.books。更重要的是,如果在模板中需要不止一次这样的计算,我们可不想将这样的代码在模板里重复好多遍。

因此我们推荐使用计算属性来描述依赖响应式状态的复杂逻辑。这是重构后的示例:

vue
<script setup>import { reactive, computed } from 'vue'const author = reactive({  name: 'John Doe',  books: [    'Vue 2 - Advanced Guide',    'Vue 3 - Basic Guide',    'Vue 4 - The Mystery'  ]})// 一个计算属性 refconst publishedBooksMessage = computed(() => {  return author.books.length > 0 ? 'Yes' : 'No'})</script><template>  <p>Has published books:</p>  <span>{{ publishedBooksMessage }}</span></template>


更新时间 2025-08-27