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

Vue基础(7)_计算属性

计算属性(computed)

一、使用方式:
1.定义计算属性: 在Vue组件中,通过在 computed 对象中定义计算属性名称及对应的计算函数来创建计算属性。计算函数会返回计算属性的值
2.在模板中使用计算属性: 在Vue的模板中,您可以直接像访问普通属性一样使用计算属性。Vue会自动处理计算属性的依赖关系,并在相关数据变化时更新计算属性。
3.计算属性的特点
(1)计算属性是基于它们的依赖进行缓存的,只有在依赖发生变化时才会重新求值。
(2)计算属性的值会根据相关依赖的变化而自动更新,无需手动触发。
(3)计算属性的定义类似于普通的属性,但需要使用函数来返回计算结果。

二、computed与methods的区别:
1.计算属性和方法的调用方式不同: 计算属性是通过对应名称直接访问的,而方法需要在模板中使用 v-on 指令或者 @ 符号进行调用。
2.计算属性可以缓存结果,而方法不能: 计算属性的值会被缓存起来,只有在它所依赖的响应式数据变化时才会重新计算。而方法每次调用都要重新计算,无法被缓存。
3.计算属性应该用于简单的计算,而方法用于复杂逻辑的处理: 如果需要对数据进行一些简单的计算或过滤,可以使用计算属性,因为它们比方法更高效。而如果需要进行一些复杂的逻辑处理,应该使用方法。

简单理解和使用计算属性(computed):
1.定义:要用的属性不存在,要通过已有属性计算得来。
2.原理:底层借助了Object.defineproperty方法提供的getter和setter
3.get函数什么时候执行?
(1).初次读取时会执行一次。
(2).当依赖的数据发生改变时会被再次调用。
4.优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便。
5.备注:
1.计算属性最终会出现在vm上,直接读取使用即可
2.如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生变化。

举例:

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><script type="text/javascript" src="../js/vue.js"></script><title>计算属性</title>
</head><body><div id="root01"><h3>差值语法实现</h3>姓:<input type="text" v-model:value="firstName"> <br>名:<input type="text" v-model:value="lastName"><br>全名:{{firstName.slice(0,3)}} {{lastName}}</div><div id="root02"><h3>methods(方法)实现</h3>姓:<input type="text" v-model:value="firstName"> <br>名:<input type="text" v-model:value="lastName"><br>性别:<input type="text" v-model:value="gender"><br>全名:<span>{{fullName()}}</span><br>全名:<span>{{fullName()}}</span></div><div id="root03"><h3>计算属性实现</h3>姓:<input type="text" v-model:value="firstName"> <br>名:<input type="text" v-model:value="lastName"><br>性别:<input type="text" v-model:value="gender"><br>全名:<span>{{fullName}}</span><br>全名:<span>{{fullName}}</span></div><div id="root04"><h3>计算属性(简写)</h3>姓:<input type="text" v-model:value="firstName"> <br>名:<input type="text" v-model:value="lastName"><br>性别:<input type="text" v-model:value="gender"><br>全名:<span>{{fullName}}</span><br>全名:<span>{{fullName}}</span></div>
</body>
<script>Vue.config.devtools = true;// 1、用 "插值语法" 输出姓名// vue提倡模板简单,当表达式过多时,插值语法代码代码会看起来臃肿new Vue({el: "#root01",data: {firstName: '张',lastName: '三',}})// 2、用 "methods(方法)" 输出姓名new Vue({el: "#root02",data: {firstName: '李',lastName: '四',gender: '男'},methods: {fullName() {console.log("fullName方法调用了");return this.firstName.slice(0, 3) + ' ' + this.lastName;}},})// 3、用 "计算属性" 输出姓名var vm = new Vue({el: "#root03",data: {firstName: '王',lastName: '五',gender: '女'},// 计算属性对象的优势:有缓存,省去不必要的重复调用。// 完整写法,包含读取(get)和修改(set)computed: {fullName: {// get的作用:当有人读取fullName属性时,get就会被调用,且返回值就作为属性fullName的值。// get什么时候调用?1.初次读取fullName时。2.所依赖的数据发生变化时。get() {console.log("计算属性对象中,属性fullName内的get函数被调用了");// 此处的this为vmreturn this.firstName + ' ' + this.lastName;},// set什么时候调用:当fullName属性被修改时。set(value) {console.log('set函数被调用', value);const arr = value.split('');this.firstName = arr[0];this.lastName = arr[1];}}},})new Vue({el: "#root04",data: {firstName: '赵',lastName: '六',gender: '女'},// 计算属性简写,只包含读取(get)computed: {// 对应以上的get函数,效果一致fullName() {console.log("计算属性对象中,属性fullName内的get函数被调用了");return this.firstName + ' ' + this.lastName;}}})
</script>
</html>

http://www.xdnf.cn/news/192835.html

相关文章:

  • C++核心编程:类与对象全面解析
  • Infrared Finance:Berachain 生态的流动性支柱
  • 车载软件架构 --- AUTOSAR的方法论
  • SwiftUI 8.List介绍和使用
  • 零基础制作Freertos智能小车(教程非常简易)持续更新中....
  • DeepSeek创始人梁文峰是个什么样的人?
  • LLM - Large Language Model
  • Android Studio 中使用 SQLite 数据库开发完整指南(Kotlin版本)
  • Redis最佳实践
  • nginx代理websocket时ws遇到仅支持域名访问的处理
  • 23种设计模式 -- 工厂模式
  • 算力困局:AI 狂飙背后的能源枷锁与破局之道
  • 后端[特殊字符][特殊字符]看前端之Row与Col
  • 1.9多元函数积分学
  • Day15(贪心算法)——LeetCode121.买卖股票的最佳时机55.跳跃游戏
  • 【计网】计算机网络的类别与性能
  • Rust 学习笔记:修复所有权常见错误
  • cookie和session
  • Flink Checkpoint 与实时任务高可用保障机制实战
  • DBeaver详细安装步骤
  • 【AI】【MCP】搭建私人王炸MCP自动化工作流
  • 微信jdk 前端vue获取流程1、
  • 泰迪杯实战案例超深度解析:特殊医学用途配方食品数据分析与智能推荐系统设计
  • 《Linux篇》基础开发工具——vim详细介绍
  • 使用手机录制rosbag包
  • 21.气体放电管的特性与使用注意事项
  • uniapp+vue3+ts 使用canvas实现安卓端、ios端及微信小程序端二维码生成及下载
  • 十一、引用与拷贝函数(References the Copy-Constructor)
  • C++实时统计数据均值、方差和标准差
  • WGCAT工单系统发现错误 定时处理工单数据任务错误