computed计算属性用法及方法对比

news2024/9/20 20:22:59

模板中的插值表达式虽然方便,但当要写复杂逻辑时就会变得臃肿,难以维护,遇上复杂逻辑时,推荐使用计算属性来描述以响应式状态的复杂逻辑。这里我们做个对比,先用表达式的方法进行计算,先把页面写好,代码如下:

<template>
	<view class="out">
		<input type="text"v-model = "firstName" placeholder="请输入名">
		<input type="text"v-model = "lastName" placeholder="请输入姓">
		<view>全称:{{firstName + "-" + lastName}}</view>
	</view>
</template>

<script setup>
	import {ref} from "vue" ;
	const firstName = ref("") ;
	const lastName = ref("") ;
</script>

<style lang="scss" scoped>
	.out{
		padding: 20px;
		input{
			border:1px solid #eee ;
			height:40px;
			padding: 0 10px;
			margin:10px 0 ;
			
		}
	}
</style>


接下来,加入计算属性,代码如下:

<template>
	<view class="out">
		<input type="text"v-model = "firstName" placeholder="请输入名">
		<input type="text"v-model = "lastName" placeholder="请输入姓">
		<view>全称:{{firstName + "-" + lastName}}</view>
		<view>全称{{fullName}}</view>
	</view>
</template>

<script setup>
	import {ref,computed} from "vue" ;
	const firstName = ref("") ;
	const lastName = ref("") ;
	
	
	const fullName = computed(()=>firstName.value + "-" + lastName.value )
</script>

<style lang="scss" scoped>
	.out{
		padding: 20px;
		input{
			border:1px solid #eee ;
			height:40px;
			padding: 0 10px;
			margin:10px 0 ;
			
		}
	}
</style>

第一行全称用的是表达式,第二行用的是计算属性,可以看到,效果是一摸一样的:
在这里插入图片描述

计算属性,其实就是把template中比较复杂的逻辑变量,放到了script里。代码量其实跟写个函数差不多,但它们之间是有区别的,区别是计算属性有缓存,若有几组相同的数据就只需调用一次就可以了,方法没有缓存,若有几组相同的数据也必须调用相应的次数,演示一下,首先是计算属性,代码如下:

<template>
	<view class="out">
		<input type="text"v-model = "firstName" placeholder="请输入名">
		<input type="text"v-model = "lastName" placeholder="请输入姓">
		<view>全称:{{fullName}}</view>
		<view>全称:{{fullName}}</view>
		<view>全称:{{fullName}}</view>
	</view>
</template>

<script setup>
	import {ref,computed} from "vue" ;
	const firstName = ref("") ;
	const lastName = ref("") ;
	// const fullName = function(){
	// 	return firstName.value + "-" + lastName.value
	// }
	const fullName = computed(()=>{
		console.log("计算属性")
		return firstName.value + "-" + lastName.value
	} )
</script>

<style lang="scss" scoped>
	.out{
		padding: 20px;
		input{
			border:1px solid #eee ;
			height:40px;
			padding: 0 10px;
			margin:10px 0 ;
			
		}
	}
</style>

可以看到,我们设置了三组表达式,只调用了一次,输入一个字母调用一次:
在这里插入图片描述
然后是方法,同样设置三组表达式,注意这里调用的话要在方法名后面写上括号,代码如下:

<template>
	<view class="out">
		<input type="text"v-model = "firstName" placeholder="请输入名">
		<input type="text"v-model = "lastName" placeholder="请输入姓">
		<view>全称:{{fullName()}}</view>
		<view>全称:{{fullName()}}</view>
		<view>全称:{{fullName()}}</view>
	</view>
</template>

<script setup>
	import {ref,computed} from "vue" ;
	const firstName = ref("") ;
	const lastName = ref("") ;
	const fullName = function(){
		console.log("方法")
		return firstName.value + "-" + lastName.value
	}
	// const fullName = computed(()=>{
	// 	console.log("计算属性")
	// 	return firstName.value + "-" + lastName.value
	// } )
</script>

<style lang="scss" scoped>
	.out{
		padding: 20px;
		input{
			border:1px solid #eee ;
			height:40px;
			padding: 0 10px;
			margin:10px 0 ;
			
		}
	
</style>

效果如下:
在这里插入图片描述
可以看到,三组表达式一开始就被调用了三次,输入一次,会调用三次。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WIN10开机突然,过一会就自动重启蓝屏DRIVER_IRQL_NOT_LESS_OR_EQUAL

环境&#xff1a; Win10 专业版 DELL7080 问题描述&#xff1a; WIN10开机突然&#xff0c;过一会就自动重启蓝屏DRIVER_IRQL_NOT_LESS_OR_EQUAL 事件日志 解决方案&#xff1a; 1.找到MEMORY.DMP文件内容&#xff0c;分析一下 Microsoft (R) Windows Debugger Version 10…

rabbitmq集群创建admin用户之后,提示can access virtual hosts是No access状态

问题描述&#xff1a; 因业务需要使用的rabbitmq是3.7.8版本的&#xff0c;rabbitmq在3.3.0之后就允许使用guest账号的权限了&#xff0c;所以需要创建一个administrator标签的用户。 如下操作创建的用户&#xff1a; 创建完成之后就提示如下的报错&#xff1a; 注&#xff1a…

探索大模型:袋鼠云在 Text To SQL 上的实践与优化

Text To SQL 指的是将自然语言转化为能够在关系型数据库中执行的结构化查询语言&#xff08;简称 SQL&#xff09;。近年来&#xff0c;伴随人工智能大模型技术的不断进步&#xff0c;Text To SQL 任务的成功率显著提升&#xff0c;这得益于大模型的推理、理解以及指令遵循等能…

postman macOS版安装包

链接: https://pan.baidu.com/s/1Y7j4mxB1Otmf3Ku41e7v7w?pwdfy99 提取码: fy99 安装后的效果

【QT】窗口MainWindow

目录 窗口的组成 菜单栏 图形化创建菜单栏 代码创建菜单栏 给菜单设置快捷键 添加子菜单 添加分割线 添加图标 创建menuBar的细节 工具栏 设置工具栏出现的初始位置&#xff08;上下左右&#xff09; 设置工具栏允许停靠的位置 设置不允许浮动 设置不允许移动…

【STM32项目】基于嵌入式智能网控微嵌式远距操控平台(完整工程资料源码)

基于嵌入式智能网控微嵌式远距操控平台 目录&#xff1a; 前言: 一、项目前景调研 1.1 研究背景及意义 1.2 国内外发展现状及趋势 1.2.1 国内现状 1.2.2 国外发展现状 1.2.3 发展趋势 二、什么是嵌入式&#xff1f; 2.1 嵌入式系统概述 2.2 嵌入式系统的组成 2.3 嵌入式操作系统…

camera-qsc-crosstalk校准数据XTALK回写

问题背景 手机越做越紧凑&#xff0c;需要模组和芯片尺寸越做越小&#xff0c;在尺寸一定的基础上&#xff0c;高像素和大像素&#xff0c;对于手机摄像头来说&#xff0c;一直是一对矛盾的存在。 高像素&#xff1a;带来高分辨率画质大像素&#xff1a;带来暗态下高感光度和…

【java】力扣 反转链表

力扣 206 链表反转 题目介绍 解法讲解 先定义两个游标indexnull&#xff0c;prenull&#xff0c;反转之后链表应该是5&#xff0c;4&#xff0c;3&#xff0c;2&#xff0c;1&#xff0c;我们先进行2->1的反转&#xff0c;然后再循坏即可 让定义的游标index去存储head.n…

RocketMQ~消息的种类与生命周期(普通消息、延时定时消息、事务消息)

普通消息 普通消息一般应用于微服务解耦、事件驱动、数据集成等场景&#xff0c;这些场景大多数要求数据传输通道具有可靠传输的能力&#xff0c;且对消息的处理时机、处理顺序没有特别要求。 以在线的电商交易场景为例&#xff0c;上游订单系统将用户下单支付这一业务事件封…

im即时通讯系统有哪些?

IM即时通讯系统是一种通过互联网和移动通信网络实现实时通信的系统。在众多IM即时通讯系统中&#xff0c;WorkPlus作为企业级IM即时通讯系统&#xff0c;提供了全面的通讯和协作解决方案。本文将介绍几种常见的IM即时通讯系统&#xff0c;以及WorkPlus作为企业级IM即时通讯系统…

第三方配件也能适配苹果了,iOS 18与iPadOS 18将支持快速配对

苹果公司以其对用户体验的不懈追求和对创新技术的不断探索而闻名。随着iOS 18和iPadOS 18的发布&#xff0c;苹果再次证明了其在移动操作系统领域的领先地位。 最新系统版本中的一项引人注目的功能&#xff0c;便是对蓝牙和Wi-Fi配件的配对方式进行了重大改进&#xff0c;不仅…

【自动驾驶汽车通讯协议】UART通信详解:理解串行数据传输的基石

文章目录 0. 前言1. 同步通讯与异步通讯1.1 同步通信1.2 异步通信 2. UART的数据格式3. 工作原理3.1 波特率和比特率3.2 UART的关键特性 4. UART在自动驾驶汽车中的典型应用4.1 UART特性4.2应用示例 5. 结语 0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自…

html5——列表、表格

目录 列表 无序列表 有序列表 自定义列表 表格 基本结构 示例 表格的跨列 表格的跨行 列表 无序列表 <ul>【声明无序列表】 <li>河间驴肉火烧</li>【声明列表项】 <li>唐山棋子烧饼</li> <li>邯郸豆沫</li> <l…

pyinstaller教程(二)-快速使用(打包python程序为exe)

1.介绍 PyInstaller 是一个强大的 Python 打包工具&#xff0c;可以将 Python 程序打包成独立的可执行文件。以下会基于如何在win系统上将python程序打包为exe可执行程序为例&#xff0c;介绍安装方式、快速使用、注意事项以及特别用法。 2.安装方式 通过 pip 安装 PyInstal…

随笔-不是来养老的吗

来了有一个多月了&#xff0c;日子过得飞快。都以为我来养老的&#xff0c;一开始我也这么认为&#xff0c;结果6月份的日均工时&#xff0c;排在了部门第一。一个月做的需求比之前的三个月都多。 来之前&#xff0c;老徐让我多承担点&#xff0c;想着能有多少活嘛&#xff0c…

QT TCP多线程网络通信

学习目标&#xff1a; TCP网络通信编程 学习前置环境 运行环境:qt creator 4.12 QT TCP网络通信编程-CSDN博客 Qt 线程 QThread类详解-CSDN博客 学习内容 使用多线程技术实现服务端计数器 核心代码 客户端 客户端&#xff1a;负责连接服务端&#xff0c;每次连接次数1。…

sklearn之神经网络学习算法

文章目录 什么是神经网络人工神经网络的结构输入层输出层隐含层神经元的链接 近几年深度学习还是比较火的&#xff0c;尤其是在大语言模型之后&#xff0c;在本质上深度学习网络就是层数比较多的神经网络。sklearn并不支持深度学习&#xff0c;但是支持多层感知机&#xff08;浅…

安全测试理论

安全测试理论 什么是安全测试&#xff1f; 安全测试&#xff1a;发现系统安全隐患的过程安全测试与传统测试区别 传统测试&#xff1a;发现bug为目的 安全测试&#xff1a;发现系统安全隐患什么是渗透测试 渗透测试&#xff1a;已成功入侵系统为目标的的攻击过程渗透测试与安全…

自动驾驶事故频发,安全痛点在哪里?

大数据产业创新服务媒体 ——聚焦数据 改变商业 近日&#xff0c;武汉城市留言板上出现了多条关于萝卜快跑的投诉&#xff0c;多名市民反映萝卜快跑出现无故停在马路中间、高架上占最左道低速行驶、转弯卡着不动等情况&#xff0c;导致早晚高峰时段出现拥堵。萝卜快跑是百度 A…

配置与管理Samba服务器(详细教程)

目录 一、基础理论 二、samba工作流程 三、项目实训 3.1目的 3.2准备工作 3.2.1服务器安装samba服务软件包 3.2.2客户端安装软件包 3.3配置Samba服务 3.3.1开启Samba服务&#xff0c;并设置开启自启动 3.3.2创建共享文件夹 3.3.3创建群组 3.3.4修改文件用户权限 3.3.5修改…