Vue核心基础3:计算属性和监视属性

1 计算属性

这边以姓名案例,来介绍计算属性

<body><div id="root"><!-- 姓:<input type="text" v-model:value="firstName"><br>名:<input type="text" v-model:value="lastName"><br> -->姓:<input type="text" v-model="firstName"><br>名:<input type="text" v-model="lastName"><br>全名:<span>{{fullName}}</span><br></div><script>const vm = new Vue({el: '#root',data: {firstName: '张',lastName: '三'},// 计算属性computed: {// 1.完整写法fullName: {// get有什么作用?当有人读取fullName时,get就会被调用,且返回值就作为fullName的值get() {// get函数中的this Vue已经处理好了, 指向vm// get什么时候被调用?1.初次读取fullName时。2.所依赖的数据发生变化时// 会有缓存,只调用一次,如果依赖的数据没有变化,那么不会重新调用get方法,直接走缓存return this.firstName.slice(0, 3) + '-' + this.lastName},// set什么时候被调用?当fullName被修改时。set(value) {const arr = value.split('-')this.firstName = arr[0]this.lastName = arr[1]}}// 2. 简写写法:确定了计算属性只读不改才能用简写形式// 可以直接将fullName函数当做一个属性来用// fullName() {//     return this.firstName.slice(0, 3) + '-' + this.lastName// }}})</script>
</body>

计算属性主要依靠它的返回值

 

2 监视属性

这边以天气案例,来介绍监视属性

<body><div id="root"><h2>今天天气很{{info}}</h2><button @click="change">切换天气</button></div><script>const vm = new Vue({el: '#root',data: {isHot: true},methods: {change() {this.isHot = !this.isHot}},computed: {info() {return this.isHot ? '炎热' : '凉爽'}},watch: {isHot: {immediate: false, // 初始化时如果为true,就是让handler调用一下// handler什么时候调用呢?  -> 当isHot发生改变的时候handler(newValue, oldValue) {console.log('isHot被修改了')console.log(newValue, oldValue)}}}})// 这样写也可以// vm.$watch('isHot', {//     immediate: true,//     handler(newValue, oldValue) {//         console.log('isHot被修改了')//         console.log(newValue, oldValue)//     }// })</script>
</body>

2.1 深度监视

            watch: {isHot: {// immediate: false, // 初始化时如果为true,就是让handler调用一下// handler什么时候调用呢?  -> 当isHot发生改变的时候handler(newValue, oldValue) {console.log('isHot被修改了')console.log(newValue, oldValue)}},// 1. 监视多级结构中某个属性的变化'numbers.a': function (newValue, oldValue) {console.log('a被修改了')console.log(newValue, oldValue)},// 2. 监视多级结构中所有属性的变化numbers: {deep: true,handler() {console.log('numbers被修改了')}}}

2.2 简写形式

            watch: {// 1.   完整写法isHot: {immediate: false, // 初始化时如果为true,就是让handler调用一下deep: true,  // 深度监视// handler什么时候调用呢?  -> 当isHot发生改变的时候handler(newValue, oldValue) {console.log('isHot被修改了')console.log(newValue, oldValue)}},// 2. 简写isHot(newValue, oldValue) {console.log('isHot被修改了')console.log(newValue, oldValue)}}

2.3 使用监视属性实现姓名案例

<body><div id="root"><!-- 姓:<input type="text" v-model:value="firstName"><br>名:<input type="text" v-model:value="lastName"><br> -->姓:<input type="text" v-model="firstName"><br>名:<input type="text" v-model="lastName"><br>全名:<span>{{fullName}}</span><br></div><script>const vm = new Vue({el: '#root',data: {firstName: '张',lastName: '三',fullName: '张-三'},watch: {firstName(newValue) {console.log(this)this.fullName = newValue + '-' + this.lastName},lastName(newValue) {this.fullName = this.firstName + '-' + newValue}}})</script>
</body>

 

3 computed 和 watch 的比较

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

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

相关文章

《CSS 简易速速上手小册》第10章:未来的 CSS(2024 最新版)

文章目录 10.1 CSS 的新特性和趋势10.1.1 基础知识10.1.2 重点案例&#xff1a;使用 CSS Grid 创建响应式图库10.1.3 拓展案例 1&#xff1a;利用 CSS 变量实现主题切换10.1.4 拓展案例 2&#xff1a;使用 lab() 颜色和 layer 规则优化样式 10.2 CSS Houdini&#xff1a;魔法般…

C++进阶(十四)智能指针

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、为什么需要智能指针&#xff1f;二、内存泄漏1、 什么是内存泄漏&#xff0c;内存泄漏的危…

STM32 7-8

目录 ADC AD单通道 AD多通道 DMA DMA转运数据 DMAAD多通道 ADC AD单通道 AD.c #include "stm32f10x.h" // Device header/*** brief 初始化AD所需要的所有设备* param 无* retval 无*/ void AD_Init(void) {RCC_APB2PeriphClockCmd(RCC_AP…

在程序中使用日志功能

在应用中&#xff0c;需要记录程序运行过程中的一些关键信息以及异常输出等。这些信息用来排查程序故障或者其他用途。 日志模块可以自己实现或者是借用第三方库&#xff0c;之前写过一个类似的使用Qt的打印重定向将打印输出到文件&#xff1a;Qt将打印信息输出到文件_qt log输…

【JavaEE】_HTML常用标签

目录 1.HTML结构 2. HTML常用标签 2.1 注释标签 2.2 标题标签&#xff1a;h1~h6 2.3 段落标签&#xff1a;p 2.4 换行标签&#xff1a;br 2.5 格式化标签 2.6 图片标签&#xff1a;img 2.7 超链接标签&#xff1a;a 2.8 表格标签 2.9 列表标签 2.10 表单标签 2.10…

C++继承(二):菱形继承、virtual菱形虚拟继承

目录 一、了解菱形继承 二、菱形继承的问题 三、虚拟继承virtual 3.1virtual 3.2虚拟继承解决数据冗余和二义性的原理 四、总结/继承和组合 一、了解菱形继承 单继承&#xff1a;一个子类只有一个直接父类时称这个继承关系为单继承 多继承&#xff1a;一个子类有两个或…

C++重新入门-C++ 函数

函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数&#xff0c;即主函数 main() &#xff0c;所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的&#xff0c;但在逻辑上&#xff0c;划分通常…

春节折腾了4天,终于用上了win11和matlab2023b

这个春节折腾了4天&#xff0c;终于与时俱进用上了win11和matlab2023b。 新购的硬盘&#xff0c;顺丰快递给力2天半到手。 先折腾硬盘&#xff0c;连线&#xff0c;没有盘符&#xff0c;使用管理&#xff0c;初始化&#xff0c;格式化&#xff0c;新建卷。下载win11&#xff0…

导数的定义【高数笔记】

【含义】可以抽象成&#xff0c;在一个极其短的时间段内&#xff0c;温度差 / 时间差 【本质】瞬间的平均值 【分类】可以分成几类&#xff1f;每类需要注意的点 【导数存在的必要条件】 【导数与极限的关系】可以参考导数的定义的式子 【题型解法】分几个题型&#xff1f;每个…

2.12作业

程序代码&#xff1a; #include<stdlib.h> #include<string.h> #include<stdio.h>//递归实现n! int n(int element) {if(0element)return 1;return element*n(element-1); }//递归实现0-n的和 int sub_sum(int element) {if(0element)return 0;return eleme…

system V——进程间通信

上一篇博客中我介绍了system V进程间通信中的内存共享&#xff0c;但是其中还有两 种通信方式&#xff1a;消息队列、和信号量&#xff0c;接下来我将简单介绍一下&#xff0c;消息队列和 信号量以及操作系统是如何看待system V进程间通信的。1. 消息队列 a. 大致介绍 消息队…

用HTML5 + JavaScript绘制花、树

用HTML5 JavaScript绘制花、树 <canvas>是一个可以使用脚本 (通常为JavaScript) 来绘制图形的 HTML 元素。 <canvas> 标签/元素只是图形容器&#xff0c;必须使用脚本来绘制图形。 HTML5 canvas 图形标签基础https://blog.csdn.net/cnds123/article/details/112…

腾讯云4核8G服务器性能如何?支持多少用户访问?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

{}初始化和初始化列表

C98标准中允许使用花括号对数组和自定义类型的变量进行初始化&#xff0c;C11扩展了大括号的用途&#xff0c;允许使用花括号对所有的内置类型和自定义类型进行初始化&#xff0c;使用时&#xff0c;可以加号&#xff0c;也可以不加。 对于自定义类型&#xff0c;当花括号中的常…

windows 下安装gin

go install 执行命令&#xff0c;执行不了的参考一下 https://blog.csdn.net/weixin_42592326/article/details/135946806 Golang 中没法下载第三方包解决办法-CSDN博客 go install github.com/gin-gonic/ginlatest 还是安装不了的话&#xff0c;用手机开热点&#xff0c;电…

Avaddon勒索病毒解密工具

前言 Avaddon勒索病毒被笔者称为2020年全球十大流行勒索病毒之一&#xff0c;其首次出现于2020年6月在俄罗斯某地下黑客论坛开始出售&#xff0c;该勒索病毒使用C语言进行编写&#xff0c;采用RSA-2048和AES-256加密算法对文件进行加密&#xff0c;该勒索病毒的传播方式多种多…

自动化AD域枚举和漏洞检测脚本

linWinPwn 是一个 bash 脚本&#xff0c;可自动执行许多 Active Directory 枚举和漏洞检查。该脚本基于很多现有工具实现其功能&#xff0c;其中包括&#xff1a;impacket、bloodhound、netexec、enum4linux-ng、ldapdomaindump、lsassy、smbmap、kerbrute、adidnsdump、certip…

第75讲Avatar头像FooterHome实现

Avatar头像实现 avatar&#xff1a; <template><el-dropdown><span class"el-dropdown-link"><el-avatar shape"square" :size"40" :src"squareUrl" /></span><template #dropdown><el-drop…

MySQL基本操作之数据库的操作

一.创建数据库 1.基本语法 create database 数据库名&#xff1b; 注意别忘记加分号。 2.if not exists 数据库名字是唯一的&#xff0c;所以不可以创建已存在的数据库&#xff0c;如下&#xff1a; 重复创建就会报错 所以有了if not exists这个语法&#xff0c;加上之后&…

JAVA设计模式之访问模式详解

访问者模式 1 访问者模式介绍 访问者模式在实际开发中使用的非常少,因为它比较难以实现并且应用该模式肯能会导致代码的可读性变差,可维护性变差,在没有特别必要的情况下,不建议使用访问者模式. 访问者模式(Visitor Pattern) 的原始定义是&#xff1a;允许在运行时将一个或多…