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

vue computed 计算属性简述

Vue 的 ‌计算属性(Computed Properties)‌ 是 Vue 实例中一种特殊的属性,用于‌声明式地定义依赖其他数据动态计算得出的值‌。它的核心优势在于能够自动追踪依赖关系,并缓存计算结果,避免重复计算,提升性能。

计算属性的特点

  1. 依赖追踪
    计算属性会自动检测其内部依赖的响应式数据(如 data 中的属性或其他计算属性)。当依赖的数据变化时,计算属性会重新计算。

  2. 缓存机制
    计算属性的结果会被缓存,只有依赖的数据变化时才会重新计算。多次访问计算属性时,若依赖未变化,直接返回缓存值。

  3. 声明式语法
    将复杂逻辑封装在计算属性中,使模板代码更简洁,逻辑更易维护。

在 Vue 组件的 computed 选项中定义计算属性:

export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    };
  },
  computed: {
    fullName() {
      return this.firstName + ' ' + this.lastName;
    }
  }
};

 在模板中直接使用:

<p>{{ fullName }}</p> <!-- 输出:John Doe -->

‌计算属性的 Setter

默认情况下,计算属性是只读的,但可以通过定义 get 和 set 实现双向绑定:

computed: {
  fullName: {
    get() {
      return this.firstName + ' ' + this.lastName;
    },
    set(newValue) {
      const names = newValue.split(' ');
      this.firstName = names;
      this.lastName = names;
    }
  }
}

适用场景

  1. 数据格式化
    如:将日期格式化为 YYYY-MM-DD,或金额添加货币符号。
  2. 复杂逻辑封装
    如:根据购物车商品列表计算总价。
  3. 依赖多数据的动态值
    如:根据筛选条件过滤列表数据。

计算属性 vs 方法

  1. 语法差异

    • 计算属性在模板中直接以属性形式调用(如 {{ fullName }})。
    • 方法需要在模板中调用(如 {{ getFullName() }})。
  2. 性能优化

    • 计算属性有缓存,依赖不变时不会重复计算。
    • 方法每次渲染都会重新执行。

计算属性 vs 侦听器(Watch)

  • 计算属性‌适合‌同步计算‌新值,且结果需要被复用。
  • 侦听器(watch)‌适合在数据变化时‌执行异步操作‌或复杂逻辑。

总结

  • 用途‌:简化模板逻辑,封装响应式计算。
  • 优势‌:自动依赖追踪、高效缓存、代码可维护性高。
  • 注意‌:避免在计算属性中执行副作用操作(如修改 DOM 或发起请求)。

相关文章:

  • 【Leetcode】138.随机链表的复制
  • Windows的tftp udp 69端口被占用,通过netstat查询
  • Feedback-Guided Autonomous Driving
  • Spring Cloud Gateway 生产级实践:高可用 API 网关架构与流量治理解析
  • QT 磁盘文件 教程04-创建目录、删除目录、遍历目录
  • OpenEuler kinit报错找不到文件的解决办法
  • js给后端发送请求的方式有哪些
  • 软考中级-数据库-5.1 计算机网络概述与网络硬件基础
  • Mmybatis xml 连接数据库的方法
  • PyTorch 深度学习实战(13):Proximal Policy Optimization (PPO) 算法
  • Oracle Data Guard(数据保护)详解
  • Python print() 打印多个变量时,可变对象和不可变对象的区别
  • 图论入门【数据结构基础】:什么是图?如何表示图?
  • Linux IP 配置
  • 完全托管的DeepSeek-R1模型正式登陆Amazon Bedrock:安全部署与使用指南
  • 【系统架构设计师】操作系统 - 文件管理 ② ( 位示图 | 空闲区域 管理 | 位号 | 字号 )
  • Flask 模版引擎的语法
  • C语言-自定义类型:联合和枚举
  • OpnenHarmony 开源鸿蒙北向开发——1.开发环境搭建(DevEco Studio 5.03)
  • 高主频GPU+RTX4090:AI生图性能优化超150%
  • 人民日报社论:坚定信心、奋发有为、创新创造——写在“五一”国际劳动节
  • 央行就《关于规范供应链金融业务引导供应链信息服务机构更好服务中小企业融资有关事宜的通知》答问
  • 摩根大通任命杜峯为亚太区副主席,加码中国市场业务布局
  • 体重管理门诊来了,瘦不下来的我们有救了?|健康有方FM
  • 王沪宁主持召开全国政协主席会议
  • 习近平对辽宁辽阳市白塔区一饭店火灾事故作出重要指示