使用计算属性前
- 1、当一个属性受多个属性影响的时候就需要用到computed
最典型的例子: 购物车商品结算的时候
- 2、模板中写太多逻辑,会让模板变得臃肿,难以维护,代码不够直观
<p>Has published books:</p>
<span>{{ author.books.length > 0 ? 'Yes' : 'No' }}</span>
const author = reactive({
name: 'John Doe',
books: [
'Vue 2 - Advanced Guide',
'Vue 3 - Basic Guide',
'Vue 4 - The Mystery'
]
})
使用计算属性后
<template>
<p>Has published books:</p>
<span>{{ publishedBooksMessage }}</span>
</template>
<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'
]
})
const publishedBooksMessage = computed(() => {
return author.books.length > 0 ? 'Yes' : 'No'
})
</script>
计算属性缓存 vs 方法
- 计算属性具有缓存性 相关属性变化时才重新计算,否则返回之前计算的结果
- 方法 调用总是会在重渲染发生时再次执行函数