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'
相关推荐
技术宅学长24 分钟前
关于CLS与mean_pooling的一些笔记
人工智能·pytorch·笔记·pycharm
sww_102626 分钟前
JVM基础学习
jvm·学习·测试工具
数据轨迹00137 分钟前
CVPR DarkIR:低光图像增强与去模糊一体化
经验分享·笔记·facebook·oneapi·twitter
num_killer1 小时前
小白的Jenkins学习
运维·python·学习·jenkins
Every exam must be1 小时前
12.2 vue学习02
学习
自小吃多1 小时前
爬电距离与电气间隙
笔记·嵌入式硬件·硬件工程
sunfove1 小时前
照度 (E) 与亮度 (L) 的关系
学习
满天星辰1 小时前
Vue.js的优点
前端·vue.js
满天星辰1 小时前
使用 onCleanup处理异步副作用
前端·vue.js
HL_风神1 小时前
设计原则之单一职责原则
c++·学习·设计模式·单一职责原则