当前位置: 首页 > news >正文

Vue3——第十五章(计算属性:computed)

一、基础示例

  • 模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。
  • 推荐使用计算属性来描述依赖响应式状态的复杂逻辑。
    在这里插入图片描述
  • 在这里定义了一个计算属性 publishedBooksMessage。computed() 方法期望接收一个 getter 函数,返回值为一个计算属性 ref
  • 和其他一般的 ref 类似,你可以通过 publishedBooksMessage.value 访问计算结果。
  • 计算属性 ref 也会在模板中自动解包,因此在模板表达式中引用时无需添加 .value。
  • Vue 的计算属性会自动追踪响应式依赖。它会检测到 publishedBooksMessage 依赖于 author.books,所以当 author.books 改变时,任何依赖于 publishedBooksMessage 的绑定都会同时更新。

二、计算属性缓存 vs 方法

  • 在表达式中像这样调用一个函数也会获得和计算属性相同的结果:
    在这里插入图片描述
  • 若我们将同样的函数定义为一个方法而不是计算属性,两种方式在结果上确实是完全相同的
  • 然而,不同之处在于计算属性值会基于其响应式依赖被缓存
  • 一个计算属性仅会在其响应式依赖更新时才重新计算。
  • Vue性能优化的一种方式。

三、可写计算属性

  • 计算属性默认是只读的。
  • 当你尝试修改一个计算属性时,你会收到一个运行时警告。
  • 只在某些特殊场景中你可能才需要用到“可写”的属性,你可以通过同时提供 getter 和 setter 来创建:
    在这里插入图片描述
  • 现在当你再运行 fullName.value = 'John Doe' 时,setter 会被调用而 firstNamelastName 会随之更新。

四、最佳实践

1、Getter 不应有副作用

  • 计算属性的 getter 应只做计算而没有任何其他的副作用,这一点非常重要。
  • 不要在 getter 中做异步请求或者更改 DOM!
  • 一个计算属性的声明中描述的是如何根据其他值派生一个值。
  • 因此 getter 的职责应该仅为计算和返回该值。
  • 可以使用侦听器:watch根据其他响应式状态的变更来创建副作用。

2、避免直接修改计算属性值

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

相关文章:

  • dw做网站有哪些用处/百度seo关键词排名优化
  • wordpress godaddy/个人网站怎么建立
  • 佛山网站搭建公司/百度账号中心
  • 陕西省建设厅人力资源网站/成都网站推广
  • wordpress上传图片被压缩/旅游最新资讯 新闻
  • 长春吉林建设信息网站/舆情通
  • 【IoT】硬件选型:如何正确区分电子线的端子型号?
  • opencv的图像基本操作(基于jupyter Notebook)
  • 【持续更新】VSCode常见快捷键总结
  • Vue知识系列-VS Code的安装+Vue环境的搭建+Vue指令
  • C语言——常用字符串库函数的介绍
  • CentOS 7 升级安装 Python 3.9 版本
  • JavaScript 浏览器的重排和重绘
  • docker 搭建伪分布模式redis机器
  • 网络安全日益严峻下计算机主机加固的意义
  • 为什么很少拿神经网络来直接做滤波器呢?
  • 右键万能格式转换工具
  • Linux 查看日志总结