首页 > 其他分享 >WHAT - 值得掌握的 computed 计算属性机制

WHAT - 值得掌握的 computed 计算属性机制

时间:2024-04-03 12:31:47浏览次数:30  
标签:WHAT Vue computed author books 计算 属性

目录

一、介绍

参考阅读:

根据文档,推荐使用计算属性来描述依赖响应式状态的复杂逻辑。

比如说,我们有这样一个包含嵌套数组的对象:

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

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

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

存在的问题:

  • 这里的模板看起来有些复杂,模板臃肿,难以维护
  • 如果在模板中需要不止一次这样的计算,我们可不想将这样的代码在模板里重复好多遍

可以用计算属性:

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

Vue 的计算属性会自动追踪响应式依赖。它会检测到 publishedBooksMessage 依赖于 author.books,会同时更新。

二、计算属性 vs 方法:缓存优势

若我们将同样的函数定义为一个方法而不是计算属性,两种方式在结果上确实是完全相同的,然而,不同之处在于:计算属性值会基于其响应式依赖被缓存。一个计算属性仅会在其响应式依赖更新时才重新计算。

注意,这里的缓存关键在于其响应式依赖是否有更新,而不是值是否有变化。这也解释了为什么下面的计算属性永远不会更新,因为 Date.n

标签:WHAT,Vue,computed,author,books,计算,属性
From: https://blog.csdn.net/weixin_58540586/article/details/137338949

相关文章

  • window.getComputedStyle会有性能问题吗
    window.getComputedStyle()方法被用来获取指定元素在浏览器中计算后的最终样式,包括继承样式、浏览器默认样式、用户自定义样式表、行内样式以及动画和过渡效果等。虽然它是一个非常有用的工具,但正如任何JavaScript操作一样,频繁或不当使用确实可能引发性能问题。以下是可能导致......
  • DOM中的一些属性
    获取属性节点对象:      getAttributeNode(不常用)    增加属性节点:      节点对象.setAttribute('属性名','属性值')    删除属性节点:      节点对象.removeAttribute('属性名')    修改属性节点:  ......
  • 监听 watch props对象属性监听 或深度监听
    对象属性监听 props:{baseFormObj:Object,},watch:{'baseFormObj.measuresItems':{immediate:true,//如果需要组件创建时立即监听,设置为truehandler(newVal,oldVal){//当myProperty变化时,这里的代码会被执行}......
  • 如何修改电脑里的文件属性?手把手教你修改文件属性
    一,文件属性含义:文件属性是指将文件分为不同类型的文件,以便存放和传输,它定义了文件的某种独特性质。常见的文件属性有系统属性、隐藏属性、只读属性和归档属性。二、文件属性作用:属性是一些描述性的信息,可用来帮助您查找和整理文件。属性未包含在文件的实际内容中,而是提供了......
  • vue3从精通到入门9:计算属性computed
    在Vue3中,computed 是一个用于创建计算属性的工具,它基于组件的响应式依赖进行复杂的计算,并返回一个新的响应式引用。计算属性是Vue的一个核心概念,它提供了一种声明式的方式来执行基于其依赖的响应式数据的计算。computed使用:计算属性与常规属性类似,但是它们是基于它们......
  • 鸿蒙ArkTS属性justifyContent不生效
    在鸿蒙ArkTS开发时,书写如下代码build(){Column(){Row(){Text('短信验证码登录')Text('忘记密码')}.justifyContent(FlexAlign.SpaceBetween)}.width('100%')}这时justifyContent并没有出现两端对齐的效果原因是没有设置Row......
  • 红队笔记10:pWnOS2.0打靶流程-whatweb指纹识别-searchsploit搜索漏洞利用getshell(vulnh
    目录开头:1.主机发现和端口扫描2.80端口- whatweb指纹识别-searchsploit搜索漏洞并利用whatweb指纹识别:searchsploit搜索历史漏洞:什么是perl?SimplePHPblog登录成功-图片上传getshell3.提权-敏感文件泄露密码泄露尝试登录 4.总结:开头:学习的视频是哔哩哔哩红......
  • NASA数据集——2014 年、2015 年和 2017 年北美地区土壤地球物理属性值(源层厚度 (ALT)
    ABoVE:AirSWOTColor-InfraredImageryOverAlaskaandCanada,2017简介文件修订日期:2019-04-25数据集版本:1摘要本数据集提供了根据2014年、2015年和2017年8月和10月在阿拉斯加北部12个研究地点(除个别地点外)采集的机载次冠层和次表层微波观测站(AirMOSS)P......
  • 前端学习<二>CSS基础——14-CSS3属性详解:Web字体
    前言开发人员可以为自已的网页指定特殊的字体(将指定字体提前下载到站点中),无需考虑用户电脑上是否安装了此特殊字体。从此,把特殊字体处理成图片的方式便成为了过去。支持程度比较好,甚至IE低版本的浏览器也能支持。字体的常见格式不同浏览器所支持的字体格式是不一样的,我......
  • render函数和ref属性
    render函数关于不同版本的vue一.vue.js与vue.runtime.xxx.js的区别1.vue.js是完整版本的vue,包含:核心功能+模板解析器。2.vue.runtime.xxx.js是运行版本的vue。只包括核心功能:没有模板解析器。二.因为vue.runtime.xxx.js没有模板解析器.所以不能使用template配置项,需要......