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

Vue入门【三】-- 详解computed计算属性

目录

computed:

         ♡ ‧₊˚ 基本使用 ‧₊˚ ♡

♡ ‧₊˚语法‧₊˚ ♡

♡ ‧₊˚效果‧₊˚ ♡

♡ ‧₊˚ 面试问点 ‧₊˚ ♡

computed与methods的区别:

 computed与watch的区别:


 

computed:

首先我们要知道computed计算属性是什么,在vue.js的官方文档中是这样解释的:

模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如:

<div id="example">
  {{ message.split('').reverse().join('') }}
</div>

在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要显示变量 message 的翻转字符串。当你想要在模板中的多处包含此翻转字符串时,就会更加难以处理。

所以,对于任何复杂逻辑,你都应当使用计算属性

所以 computed计算属性 就是用来处理复杂逻辑的,注意:是建议/可以,而不是必须使用。

 ♡ ‧₊˚ 基本使用 ‧₊˚ ♡

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.10"></script>
  </head>
  <body>
    <div id="app">
		<input type="number" v-model.number="a">
		<input type="number" v-model.number="b">
		<br>
		{{total}}
	</div>
    <script>
      new Vue({
        el: "#app",
        data() {
          return {
            a: 1,
            b: 4,
          };
        },
        computed: {
          total() {
            return this.a + this.b;
          },
        },
        methods: {},
      });
    </script>
  </body>
</html>

♡ ‧₊˚语法‧₊˚ ♡

// 语法
	computed: {
		计算属性名 () {
			return 值
		}
	}

♡ ‧₊˚效果‧₊˚ ♡

 且当input输入框内的数字发生变化时,下方的total值也会随之发送改变。

 ♡ ‧₊˚ 面试问点 ‧₊˚ ♡

  • computed与methods的区别:

        计算属性有依赖缓存 如果值没有发生变化是不会重新调用计算属性

        methods没有缓存 每一个调用都会重新执行/渲染 发送异步请求

        计算属性不处理异步请求

实例:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<script src="https://cdn.jsdelivr.net/npm/vue@2.7.10"></script>
</head>
<body>
	<div id="app">
		{{total}}
		{{total}}
		{{total}}
		{{total}}
		{{str()}}
		{{str()}}
		{{str()}}
		{{str()}}
	</div>
	<script>
		new Vue({
			el:"#app",
			data:{
				a:5,
				b:6,
			},
			computed:{
				total(){
						console.log('计算属性');
						return 111;
				}
			},
			methods:{
				str(){
				console.log('方法');
					return 222;
				}
			}
		})
	</script>
</body>
</html>

可以看到“计算属性”只打印了一次,而“方法”打印了四次, 因此得知:计算属性基于依赖项的值进行缓存,只要依赖的变量不变,都直接从缓存取结果,不再重新调用计算属性。

  •  computed与watch的区别:

相同点是都可以实现通过监控data数据域中属性值的变化来触发相应的回调函数,进而实现我们特殊的逻辑业务处理功能。

  1. computed默认第一次加载的时候就开始监听;watch默认第一次加载不做监听,如果需要第一次加载做监听,添加immediate属性,设置为true(immediate:true);

  2. computed中的函数所依赖的属性没有发生变化,那么调用当前的函数的时候会从缓存中读取,而watch在每次监听的值发生变化的时候都会执行回调 ;

  3. 使用场景:computed----当一个属性受多个属性影响的时候,使用computed-----购物车商品结算。watch–当一条数据影响多条数据的时候,使用watch-----搜索框。

相关文章:

  • 线程池概念2
  • 一键部署设计稿至线上 —— D2C国产神器
  • 死锁检测实现
  • jsp杂草信息分类系统myeclipse开发sql数据库BS模式java编程网页结构serlvet技术mvc框架
  • 2022牛客多校(八)
  • jenkins 持续集成/项目部署
  • 彻底掌握Makefile(二)
  • 【华为机试真题Java】取近似值
  • 如何预备ERP中的事务数据?
  • 360 度评估中的最佳问题推荐
  • 谷粒商城超详细笔记+踩坑(1)——项目环境搭建、人人开源快速开发和代码生成器
  • 性价比首选,百元旗舰级骨传导耳机——南卡Runner CC3实战评测
  • ibatis的xml中<resultMap>使用继承,省时省力
  • CSDN编程竞赛第六期总结
  • 教外谈(1)—— windows逆向入门
  • JS 中的深拷贝与浅拷贝
  • const let
  • JavaScript-Array类型
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • JavaScript异步流程控制的前世今生
  • Redis字符串类型内部编码剖析
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • XML已死 ?
  • 对JS继承的一点思考
  • 诡异!React stopPropagation失灵
  • 前端技术周刊 2019-01-14:客户端存储
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 深度学习在携程攻略社区的应用
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #laravel 通过手动安装依赖PHPExcel#
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (6)添加vue-cookie
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Java)【深基9.例1】选举学生会
  • (Note)C++中的继承方式
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (二)学习JVM —— 垃圾回收机制
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Unity3DUnity3D在android下调试
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)四层和七层负载均衡的区别
  • .NET 5种线程安全集合
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net core 连接数据库,通过数据库生成Modell
  • .net FrameWork简介,数组,枚举
  • .NET微信公众号开发-2.0创建自定义菜单
  • ??myeclipse+tomcat