计算属性是 Vue.js 提供的一种特殊属性,用于在模板中动态计算和返回数据。计算属性使得在模板中使用动态计算的数据变得非常简洁和方便,同时又能保持响应式更新的特性,提高了代码的可读性和可维护性。

与方法(methods)的区别:

计算属性(Computed Properties)和方法(Methods)在 Vue.js 中都可以用来计算和返回数据,但它们之间有几个关键的区别:

  1. 缓存与非缓存

    • 计算属性:计算属性会根据它们的依赖进行缓存。只有当依赖发生变化时,计算属性才会重新计算其值。这意味着在同一依赖下多次访问计算属性时,只会执行一次计算,后续访问会直接返回缓存的值。
    • 方法:方法每次被调用时都会重新执行其中的代码,不会进行缓存。每次调用方法都会重新计算其返回值。
  2. 语法

    • 计算属性:使用 computed 属性来定义计算属性,需要使用一个函数来计算并返回属性的值。
    • 方法:在 Vue.js 组件中可以直接定义普通方法,然后在需要的地方调用这些方法来获取数据。
  3. 依赖追踪

    • 计算属性:Vue.js 能够自动追踪计算属性的依赖,并在依赖发生变化时自动重新计算属性的值。这意味着你无需手动管理计算属性的依赖关系。
    • 方法:方法不具备自动的依赖追踪功能。如果方法内部依赖于响应式数据,你需要手动管理这些依赖关系。
  4. 用途

    • 计算属性:适用于基于响应式数据进行复杂的计算逻辑,例如过滤、排序、格式化等操作。常用于模板中直接引用,以简化模板的复杂度。
    • 方法:适用于不依赖响应式数据或依赖较少的简单计算逻辑。常用于事件处理、方法调用等场景。
  5. 调用方式

    • 计算属性:在模板中直接像访问数据属性一样使用计算属性,不需要加括号。
    • 方法:在模板中通过方法名加括号的方式调用方法。

一句话,计算属性适用于需要缓存和依赖追踪的复杂计算逻辑,而方法则适用于不需要缓存或依赖较少的简单计算逻辑。

计算属性实例:礼物清单

实现功能:

根据礼物清单,统计求和,求得礼物总数。

思路:

首先在computed里声明一个求和的计算属性(就是一个函数),然后在html里像普通属性一样使用。

代码:

html:

<div id="app">
<h3>黑仔的礼物</h3>
<table>
<tr>
<th>名称</th>
<th>数量</th>
</tr>
<tr v-for="(item, index) in gifts" :key="item.id">
<td>{{ item.name }}</td>
<td>{{ item.num }}</td>
</tr>
</table>
<p style="color: red;">总计:{{ total }}</p>
</div>

js:

<script>
const app = new Vue({
el: '#app',
data: {
gifts: [
{id: 1, name: '篮球', num: 1},
{id: 2, name: '本子', num: 10},
{id: 3, name: '铅笔', num: 10},
]
},
//在computed里声明
//对数组里的sum求和:使用reduce(sum, 0)
computed: {
total(){
let total = this.gifts.reduce((sum, item) => sum + item.num, 0)
return total
}
}
})
</script>

css:

<style>
table{
border-collapse: collapse;
}
th,td{
width: 200px;
height: 50px;
border: 1px solid black;
text-align: center;
}
</style>

Vue学习:6.认识计算属性的更多相关文章

  1. Vue学习笔记之计算属性和侦听器

    0x00 计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div> {{ message.split(''). ...

  2. Vue学习笔记之计算属性、内容分发、自定义事件

    1. 计算属性 计算属性的重点突出在属性两个字上(属性是名词),首先它是个属性其次这个属性有计算的能力(计算是动词),这里的计算就是个函数:简单点说,它就是一个能够将计算结果缓存起来的属性(将行为转化 ...

  3. Vue学习3:计算属性computed与监听器

    下面是计算属性相关代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  4. VUE 学习笔记 四 计算属性和监听器

    1.计算属性 对于任何复杂逻辑,你都应当使用计算属性 <div id="example"> <p>Original message: "{{ me ...

  5. Vue学习笔记:计算属性

    使用函数的缺点 如果我们想要将数据经过转化后再显示,或者多个数据结合起来进行显示,一般可以直接在数据渲染或者数据绑定的时候书写表达式 如果表达式过于复杂,或者逻辑太多的时候,我们可以将其封装在函数里, ...

  6. vue.js初探:计算属性和methods

    在vue.js中,计算属性和methods方法的函数相同时,两者的最终执行结果都是相同的.然而不同的是,计算属性是基于它的依赖缓存.计算属性只有在它的相关依赖发生改变时才会重新取值.这就意味着只要 m ...

  7. Vue学习笔记【31】——Vue路由(computed计算属性的使用)

    computed计算属性的使用 默认只有getter的计算属性:  <div id="app">    <input type="text" ...

  8. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十八║Vue基础: 指令(下)+计算属性+watch

    回顾 今天来晚辣,给公司做了一个小项目,一个瀑布流+动态视频控制的DEMO,有需要的可以联系我,公司的项目就不对外展示了(一个后端程序员真的要干前端了哈哈哈). 书接上文,昨天正式的开始了Vue的代码 ...

  9. 【Vue 2.x】计算属性

    Vue对象,按照现在的学习进度,可以分为: 其中el代表作用的HTML元素: data代表el中的所有数据: methods代表el中所有元素上的事件: computed代表计算属性,用于计算data ...

  10. Vue的指令系统、计算属性和表单输入绑定

    指令系统 指令 (Directives) 是带有 v- 前缀的特殊特性.指令特性的值预期是单个 JavaScript 表达式 (v-for 是例外情况,稍后我们再讨论).指令的职责是,当表达式的值改变 ...

随机推荐

  1. Quick BI产品核心功能大图(五)移动端:让数据在更多业务场景中流通

    ​简介:将数据更好的融入日常工作中,一个重要的前提条件就是多端多渠道的数据触达和办公协同能力. Quick BI凭借移动端交互体验,帮助用户随时随地便捷查看报表,并通过在线协同方式,追踪策略的执行落地 ...

  2. [FAQ] Phpstorm 代码提示功能失效问题

    如果是之前有代码提示,中间突然不出现提示了,那么考虑重建一下项目索引. 示例: Refer:Phpstorm代码提示 Link:https://www.cnblogs.com/farwish/p/13 ...

  3. 七天.NET 8操作SQLite入门到实战 - (2)第七天Blazor班级管理页面编写和接口对接

    前言 上一章节我们引入BootstrapBlazor UI组件完成了EasySQLite后台界面的基本架子的搭建,本章节的主要内容是Blazor班级管理页面编写和接口对接. 七天.NET 8 操作 S ...

  4. Linux下的目录

    FHS 因为利用Linux来开发产品或distributions的社群/公司与个人实在太多了, 如果每个人都用自己的想法来配置文件放置的目录,那么将可能造成很多管理上的困扰. 你能想象,你进入一个企业 ...

  5. nim 4. 模块

    看了一下nim的模块系统,真的非常简洁. 1) 一个nim文件就是一个模块 2) 通过import 引入模块,引入的时候不需要带扩展名, 比如有个模块 mod1.nim,  引入的时候: import ...

  6. 如何在Ubuntu 16.04上安装和保护MongoDB

    第1步 - 添加MongoDB存储库 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14 ...

  7. python教程1.1:环境安装+代码编辑器安装

    1.环境安装 打开官⽹ https://www.python.org/downloads/windows/ 下载中 下载后执⾏,点击下⼀步安装就⾏,注意选择添加Python到当前⽤户环境变量 2.代码 ...

  8. sql 查找是否存在的记录

    场景:根据条件从数据库表中查询 『有』与『没有』,只有两种状态 方法1: SELECT count(*) FROM table WHERE a = 1 方法2: SELECT 1 FROM table ...

  9. 原生微信小程序button去掉边框

    直接改没反应,需要使用::after更改

  10. Lua热更学习--使用toLua中的协程

    [6] C#访问调table类中的成员变量和函数 访问table中的变量和函数 lua中可以使用table作为class,因此对table中的函数访问调用是必要的根据前面对table访问和functi ...