Vue计算属性:简化数据处理和视图更新的利器

一、计算属性的基本使用

  • 计算属性:一个特殊属性,值依赖于另外一些数据动态计算出来。
  • 🚩🚩🚩计算属性特点:函数内使用的变量改变,重新计算结果返回。
  • 💣💣💣注意:
    ①、计算属性必须定义在computed节点中。
    ②、计算属性必须是一个function,计算属性必须有返回值。
    ③、计算属性不能被当当作方法调用,要作为属性来使用。
computed:{"计算属性名"(){return "值"}
}
<template><div><p>和为:{{ num }}</p></div>
</template>
  • 计算属性也是属性, 所以不要和data里重名, 用起来也和data类似

(一)全选反选案例

在这里插入图片描述

<template><div><span>全选:</span><input type="checkbox" v-model="ck" /><!-- <button >反选</button> --><ul><li><input type="checkbox" /><span>名字</span></li></ul></div>
</template><script>
export default {// 初始化数据data() {return {arr: [{name: "猪八戒",c: false, // 该项是否选中?},{name: "孙悟空",c: false,},{name: "唐僧",c: false,},{name: "白龙马",c: false,},],};},
};
</script>
<style>
</style>

在这里插入图片描述

<template><div><span>全选:</span><input type="checkbox" v-model="ck" /><!-- <button >反选</button> --><ul><li v-for="(item,i) in arr" :key="i"><!-- :checked="item.c" 单项数据绑定 --><!-- v-model="item.c"  双向数据绑定 --><input type="checkbox" v-model="item.c"/><span>{{item.name}}</span></li></ul></div>
</template>

在这里插入图片描述

📢📢📢(1)小选决定大选,大选被小选算计出来

方法一 —— forEach循环

<template><div><span>全选:</span><input type="checkbox" :checked="bigCk" /><!-- <button >反选</button> --><ul><li v-for="(item, i) in arr" :key="i"><!-- :checked="item.c" 单项数据绑定 --><!-- v-model="item.c"  双向数据绑定 --><input type="checkbox" v-model="item.c" /><span>{{ item.name }}</span></li></ul></div>
</template><script>
// s四个小选----->决定大选
// 1.四个小选状态,都选中!大选框也要选中!否则,不能选中
// 2.大选框的状态,是由四个小选框的状态决定!由四个小选状态计算出来
// [大选框的状态被计算出来!]
export default {// 初始化数据data() {return {arr: [{name: "猪八戒",c: true, // 该项是否选中?},{name: "孙悟空",c: false,},{name: "唐僧",c: false,},{name: "白龙马",c: false,},],};},//计算属性:computed:{// 【简单写法】语法:// 自定义属性名:(){计算出某个值的过程   return 结果; } bigCk(){// 四个小选-->决定大选let key;//大选值let num=0;// 小选选中的个数// 统计小选选中的个数// this.arr当前的组件对象arrthis.arr.forEach(item =>{if(item.c==true){num++;// 统计}});// num 统计的结果if(num==this.arr.length){// 选中的个数 和 数组的长度一样key = true;}else{// 有的没有选中key = false;}return key;}},
};
</script>

方法二 —— every方法

①、【计算属性的简单写法】
  • 🤔🤔🤔every()方法是数组对象的一个方法,它用于检测数组中的所有元素是否都满足某个条件,如果所有元素都满足条件,则返回true,否则返回false。
ck(){return this.arr.every(item => item.c==true)
}

在这里插入图片描述

②、【完整写法】
ck:{get(){return this.arr.every(item => item.c==true);}
}

📢📢📢(2)全选算计小选

  • 点击“选中的”全选按钮,所有的选项都取消。
<template><div><span>全选:</span><input type="checkbox" v-model="ck" /><!-- <button >反选</button> --><ul><li v-for="(item, i) in arr" :key="i"><!-- v-model="item.c"  双向数据绑定👇👇👇👇👇 --><input type="checkbox" v-model="item.c" /><span>{{ item.name }}</span></li></ul></div>
</template>
<script>
export default {// 初始化数据data() {return {arr: [{name: "猪八戒",c: true, // 该项是否选中?},{name: "孙悟空",c: false,},{name: "唐僧",c: false,},{name: "白龙马",c: false,},],};},//计算属性:computed:{ck:{get(){return this.arr.every(item => item.c==true);},set(val){//ck要算计别人,得让视图上有得到ck值机会//把val值设置给每一个小选框!this.arr.forEach(item =>item.c=val);}}},
};
</script>
  • 🔔🔔🔔注意:
    什么时候用计算属性:
    ①、简单写法:发现某个值,被算计出来!!
    ②、完整写法:除了被算计,还要算计别人!!

(二)计算属性的设置问题—完整写法

  1. ✅✅✅计算属性默认情况下只能获取,不能修改。
  2. ✅✅✅要给计算属性赋值,就必须写计算属性的完整写法!!
computed:{full:{get(){...},set(value){...}}
}
  • 💭💭💭什么时候用计算属性完整写法? 给计算属性变量赋值时。

(三)不用计算属性,用函数调用能实现吗?计算属性优势在哪里?

📢📢📢(1)计算属性的缓存说明

  • 🍂🍂🍂计算属性,基于依赖项的值进行缓存,依赖的变量不变,都直接从缓存取结果。
  • 计算属性如果被多次使用,性能极高。
<template><div><ul><li v-for="(item,i) in list" :key="i"> {{ item }}</li></ul><h1>总分由方法调用:{{ zf() }}</h1><h1>总分由方法调用:{{ zf() }}</h1><h1>总分由方法调用:{{ zf() }}</h1><h1>总分由计算属性:{{ jszf }}</h1><h1>总分由计算属性:{{ jszf }}</h1><h1>总分由计算属性:{{ jszf }}</h1></div>
</template><script>
export default {data(){return{list:[88,99,100]}},methods:{// 没有使用计算属性,用常规方法调用,返回值zf(){console.log("方法调用")return this.list.reduce((sum,item) => sum+=item,0);}},computed:{jszf(){console.log("计算属性")return this.list.reduce((sum,item) => sum+=item,0);}}
}
</script>

在这里插入图片描述

  • 对比一下函数执行的次数?

📢📢📢(2)优势

  • 🍗🍗🍗计算属性特点?
    ①、计算后会立刻缓存,下次直接读缓存
    ②、依赖项改变, 函数会重新执行 并 重新缓存
  • 多次使用计算属性,性能会极高

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/23355.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springcache的使用(小白也看得懂)

简介 SpringCache整合Redis可以使用Spring提供的Cacheable注解来实现对Redis的缓存操作。使用这种方式可以轻松地在应用程序中启用缓存&#xff0c;并且不需要手动编写访问Redis的代码。在配置文件中需要配置Redis的连接信息以及缓存管理器。使用这种方式可以做到轻松配置&…

满汉楼项目

满汉楼项目 1. 满汉楼介绍 满汉楼是一个综合餐饮管理系统&#xff0c;其主要分为&#xff1a; 人事登记&#xff1a;各部门人员信息登录管理&#xff1a;员工号、姓名、职位、密码菜谱价格&#xff1a;菜谱及价格报表统计&#xff1a;统计销售额成本及库房&#xff1a;名称注…

ES 跨集群搜索 Cross-cluster search (CCS)

跨集群查询 跨集群搜索(cross-cluster search)使你可以针对一个或多个远程集群运行单个搜索请求。 例如&#xff0c;你可以使用跨集群搜索来筛选和分析存储在不同数据中心的集群中的日志数据。 环境准备 角色IP系统dev172.16.122.244CentOS 7.9prod172.16.122.245CentOS 7.9 ES…

单元测试用例到底该如何设计?

目录 前言 使用参数方法创建测试用例 使用执行路径方法创建测试用例 总结 前言 最近一些大公司在进行去测试化的操作&#xff0c;这一切的根源大概可以从几年前微软一刀切砍掉所有内部正式的测试人员开始说起&#xff0c;当时微软内部的测试工程师有一部分转职成了开发工程…

简单的聊一聊如何用CSS制作一个专业的头部页眉(Headers)

一个吸引人的网页页眉对于给访问者留下良好的第一印象至关重要。一个设计精良的页眉不仅能够吸引注意力&#xff0c;还能为整个网站设定基调。借助CSS&#xff0c;创建现代化和视觉吸引力的网页页眉比以往任何时候都更加容易。 在本文中&#xff0c;我们将探索一些基本的技巧和…

vue本地开发集成https

背景&#xff1a;在本地项目开发中&#xff0c;调用第三方服务获取音视频通话&#xff0c;音视频通话是采用 WebRTC 来实现的&#xff0c;而 WebRTC 中使用音视频设备进行取流是需要在安全域下才可以调起的设备权限 解决方案&#xff1a;使用npm安装mkcert&#xff0c;配置证书…

系统架构设计师 8:系统质量属性与架构评估

软件系统属性包括功能属性和质量属性&#xff0c;软件架构重点关注的是质量属性。为了精确、定量地表达系统的质量属性&#xff0c;通常会采用质量属性场景的方式进行描述。 在确定软件系统架构&#xff0c;精确描述质量属性场景后&#xff0c;就需要对系统架构进行评估。软件…

自定义指令directives:防抖,节流,element-ui的无限滚动在el-table上使用的封装

vue官网对于自定义指令的介绍 添加链接描述 除了核心功能默认内置的指令 (v-model 和 v-show)&#xff0c;Vue 也允许注册自定义指令。注意&#xff0c;在 Vue2.0 中&#xff0c;代码复用和抽象的主要形式是组件。然而&#xff0c;有的情况下&#xff0c;你仍然需要对普通 DOM…

配置Hadoop_0

配置Hadoop_0 1配置Hadoop100模板虚拟机1.1配置Hadoop100模板虚拟机硬件1.2配置Hadoop100模板虚拟机软件1.3配置Hadoop100模板虚拟机IP地址1.4配置Hadoop100模板虚拟机主机名称/主机名称映射1.5配置Hadoop100模板虚拟机远程操作工具 1配置Hadoop100模板虚拟机 Hadoop100 内存…

Postman+Newman+Git+Jenkins+Slack 接口自动化和监控

目录 前言&#xff1a; 一、Newman 介绍&#xff1a; 1、简介 2、安装 3、检查 4、运行 二、Newman 命令行介绍&#xff1a; newman run [options] 测试结果配置 ------------------------------------分 割 线----------------------------------------------------…

Linux中makefile

第一个版本的makefile Makefile的依赖是从上至下的&#xff0c;换句话说就是目标文件是第一句里的目标&#xff0c;如果不满足执行依赖&#xff0c;就会继续向下执行。如果满足了生成目标的依赖&#xff0c;就不会再继续向下执行了。 Make会自动寻找依赖条件所用到的文件&…

【运维工程师学习五】数据库之MariaDB

【运维工程师学习五】数据库 1、常用的关系型数据库2、C/S结构3、MariaDB图形客户端4、安装MariaDB5、启动MariaDB及验证启动是否成功6、验证启动——端口7、验证启动——进程8、MariaDB配置文件路径主配置文件解读&#xff1a; 9、MariaDB的配置选项10、MariaDB客户端连接1、在…