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

Vue的计算属性

1、概念

        ​计算属性(Computed Properties)​​ 是一种用于声明式地处理数据依赖和缓存的特性。它们是基于它们的响应式依赖进行缓存的,只有当依赖的数据发生变化时,计算属性才会重新计算。是在内存中运行

        通俗理解:就是完成计算,存在属性中缓存起来,当需要计算的值不变时,这个值就不会变,不会重新计算,减少开销。

2、基本用法

        在 computed 选项中定义

new Vue({el: '#app',data: {firstName: 'zhang',lastName: 'san'},computed: {fullName() {return this.firstName + ' ' + this.lastName;}}
});

        在模板中可以直接像普通属性一样使用fullName:

<div id="app">{{ fullName }}  <!-- 输出:zhang san -->
</div>

3、计算属性的特点

        ​1、 缓存机制

                计算属性是基于它们的依赖进行缓存的。​只有当依赖的响应式数据(如 data 中的属性)发生变化时,计算属性才会重新计算如果依赖没有变化,多次访问计算属性会立即返回之前的计算结果,不会重新执行计算函数

        2、对比methods定义的区别:​
1、如果把同样的逻辑写在 methods 中,每次重新渲染时,该方法都会被重新调用执行,哪怕依赖没变。

                2、在computed 中定义返回的是属性,在methods中定义的是方法

methods: {getFullName() {return this.firstName + ' ' + this.lastName;}
}<!-- 在模板中调用:{{ getFullName() }},每次渲染都会执行这个函数 -->
        3、​响应式依赖

                计算属性的函数中只能访问响应式的数据(比如 data、props、其他计算属性等)​,Vue 会自动追踪这些依赖,并在它们改变时更新计算属性。

        4、必须返回一个值

                计算属性的函数必须返回一个值,这个值就是计算属性的最终值。

4、计算属性的 Setter(可读写)

        在默认情况下,计算属性是只读的,但也可以提供一个 setter,使其可写;当用户修改输入框内容时,会触发 set 方法,从而更新 firstName 和 lastName

computed: {fullName: {// getterget() {return this.firstName + ' ' + this.lastName;},// setterset(newValue) {const names = newValue.split(' ');this.firstName = names[0];this.lastName = names[names.length - 1];}}
}

        在模板或代码中使用方式:

<input v-model="fullName" />

5、计算属性 vs 方法 vs 侦听器

特性计算属性 (Computed)方法 (Methods)侦听器 (Watchers)
缓存✅ 有缓存,依赖不变则不重新计算 每次调用都会执行❌无缓存,监听到变化就会触发回调
用途用于根据依赖数据计算出一个新值​用于封装可复用逻辑,主动调用用于监听某个数据变化并执行异步或复杂操作​
是否支持 setter✅ 支持(对象形式定义时)❌ 不适用❌ 不适用
语法简洁性更简洁,适合模板中直接使用需要手动调用函数配置稍复杂

6、示例

new Vue({el: '#app',data: {searchText: '',items: ['China', 'US', 'UK', 'Japan']},computed: {filteredItems() {return this.items.filter(item =>item.toLowerCase().includes(this.searchText.toLowerCase()));}}
});
<input v-model="searchText" placeholder="Search country" />
<ul><li v-for="item in filteredItems" :key="item">{{ item }}</li>
</ul>

这里 filteredItems 是根据 searchText 和 items 动态计算出来的,且有缓存优化。

7、总结

  • ​计算属性适合用于根据现有数据派生出新的数据,特别是需要缓存、高效更新的场景。​​
  • 它是基于响应式依赖进行缓存的,只有依赖改变时才重新计算。
  • 可以定义成函数形式(只有 getter),也可以定义为对象形式(包含 getter 和 setter)

文章转载自:

http://xnbrRiuA.LsmgL.cn
http://RbYXNB1i.LsmgL.cn
http://fx0VlpCA.LsmgL.cn
http://3QgaXeWw.LsmgL.cn
http://mQk0qwTm.LsmgL.cn
http://h9ahDlKB.LsmgL.cn
http://Mxei5WLH.LsmgL.cn
http://KW9s9oyB.LsmgL.cn
http://FqmhPKfL.LsmgL.cn
http://mfhgfjIh.LsmgL.cn
http://JH3844wA.LsmgL.cn
http://LfAsDNYf.LsmgL.cn
http://ZO9cRY8r.LsmgL.cn
http://9hLbhLS6.LsmgL.cn
http://koRzoAnw.LsmgL.cn
http://mNxK6wrN.LsmgL.cn
http://O5HALnp9.LsmgL.cn
http://hVNJLIwx.LsmgL.cn
http://7QSmiz38.LsmgL.cn
http://pqWl6MiG.LsmgL.cn
http://jhS5dver.LsmgL.cn
http://As6lYNau.LsmgL.cn
http://GG8UJGr3.LsmgL.cn
http://YiHCHGvW.LsmgL.cn
http://BJQvQlV3.LsmgL.cn
http://7izNoKV9.LsmgL.cn
http://sdqb4dow.LsmgL.cn
http://XpUuarC0.LsmgL.cn
http://ddBjCtmd.LsmgL.cn
http://SzPOFzfB.LsmgL.cn
http://www.dtcms.com/a/372859.html

相关文章:

  • Redis 非缓存核心场景及实例说明
  • 食品罐头(铝罐)表面缺陷数据集:8k+图像,4类,yolo标注
  • 云计算系统安全
  • 微信群机器人-备份文件发送通知
  • Linux-条件变量
  • 6.python——字符串
  • 懒汉式——LazyMan(任务队列应用)
  • Nginx 实战系列(四)—— Nginx反向代理与负载均衡实战指南
  • Nginx 反向代理 + Tomcat 集群:负载均衡配置步骤与核心原理
  • 【Linux】匿名管道和进程池
  • PWA:打造媲美 Native Apps 的 Web 应用体验
  • # 小程序 Web 登录流程完整解析
  • 2025中国AI HR市场深度洞察:趋势、厂商与未来展望
  • 并发编程的守护者:信号量与日志策略模式解析
  • Flink Task线程处理模型:Mailbox
  • ActiveMQ classic ,artemis ,artemis console ,nms clients,cms client详解
  • 【论文阅读】Far3D: Expanding the Horizon for Surround-view 3D Object Detection
  • Three.js使用outlinePass描边后,描边颜色和背景叠加变淡
  • GPT系列--类GPT2源码剖析
  • 反编译分析C#闭包
  • DTO与POJO:核心差异与最佳实践
  • #C语言——刷题攻略:牛客编程入门训练(九):攻克 分支控制(三)、循环控制(一),轻松拿捏!
  • Android 中 自定义 RecyclerView 控件限制显示高度
  • Codesy中的UDP发送信息
  • Hadoop进程:深入理解分布式计算引擎的核心机制
  • SQL Server死锁排查实战指南
  • 自学嵌入式第三十八天:数据库
  • 【开题答辩全过程】以 基于springboot的酒店管理系统设计与实现为例,包含答辩的问题和答案
  • SpringBoot控制层接收参数处理、Logback日志入门和使用
  • Python快速入门专业版(十三):Python变量进阶:全局变量与局部变量(含global关键字用法)