vue3学习笔记之计算属性computed

最佳实践​

Getter 不应有副作用​

计算属性的 getter 应只做计算而没有任何其他的副作用,这一点非常重要,请务必牢记。举例来说,不要在 getter 中做异步请求或者更改 DOM!一个计算属性的声明中描述的是如何根据其他值派生一个值。因此 getter 的职责应该仅为计算和返回该值。在之后的指引中我们会讨论如何使用侦听器根据其他响应式状态的变更来创建副作用。
避免直接修改计算属性值​

从计算属性返回的值是派生状态。可以把它看作是一个"临时快照",每当源状态发生变化时,就会创建一个新的快照。更改快照是没有意义的,因此计算属性的返回值应该被视为只读的,并且永远不应该被更改------应该更新它所依赖的源状态以触发新的计算。

关于第2点的理解:

永远不应该被更改------应该更新它所依赖的源状态以触发新的计算。

javascript 复制代码
<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'
  ]
})

// 一个计算属性 ref
const publishedBooksMessage = computed(() => {
  return author.books.length > 0 ? 'Yes' : 'No'
})
</script>

<template>
  <p>Has published books:</p>
  <span>{{ publishedBooksMessage }}</span>
</template>

在上面的代码中,我们不应该出现下面的情况:

javascript 复制代码
publishedBooksMessage = 'Yes'
相关推荐
心中有国也有家17 小时前
catlass 算子模板库中的 FlashAttention 高性能实现
笔记·算法
耶叶17 小时前
数字逻辑实验0:verilog语法和代码初步学习
学习
Cat_Rocky17 小时前
Linux学习-Zabbix 7
学习·zabbix
炽烈小老头17 小时前
【每天学习一点算法 2026/05/20】省份数量
学习·算法
CryptoPP17 小时前
快速集成:基于现代API的金融数据流解决方案
大数据·数据结构·笔记·金融·区块链
清平乐的技术专栏17 小时前
【Flink学习】(七)Flink 状态编程入门,有状态实时计算
大数据·学习·flink
穗余17 小时前
2026 AI x Web3 School共学营笔记-Day3
人工智能·笔记·web3
蛾子喵喵喵17 小时前
【自用】惊恐发作应对方法
笔记
searchforAI17 小时前
AI工具自动解析B站、抖音等视频并整理成图文笔记
人工智能·经验分享·笔记·gpt·aigc·知识图谱
Python大数据分析@17 小时前
现在怎么去学习AI,在哪里去学习?
人工智能·学习