Vue笔记 2

news2025/3/1 14:00:46

数据代理

数据代理:通过一个对象代理对另一个对象中属性的操作(读/写)

let obj={x:100} 
let obj2={y:200}
Object.defineProperty(obj2,'x',{
    get(){
        return obj.x
    },
    set(value){
        obj.x = value
    }
})

Vue中的数据代理

  1. Vue中的数据代理:

    通过vm对象来代理data对象中属性的操作(读/写)

  2. Vue中数据代理的好处:

    更加方便的操作data中的数据

  3. .基本原理:

    通过object.defineProperty把data对象中所有属性添加到vm上。

    为每一个添加到vm上的属性,都指定一个getter/setter。

    在getter/setter内部去操作(读/写)data中对应的属性。

事件的基本使用

  1. 使用v-on:xxx或@xxx绑定事件,其中xxx是事件名;
  2. 事件的回调需要配置在methods对象,最终会在vm上;
  3. methods中配置的函数,不要用箭头函数!否则this就不是vm了;
  4. methods中配置的函数,都是被Vue所管理的函数,this的指向是vm 或 组件实例对象;
  5. @click="demo"和@click="demo($event)”效果一致,但后者可以传参;
    在这里插入图片描述

事件修饰符

Vue中的事件修饰符:

  1. prevent:阻止默认事件(常用);
  2. stop:阻止事件冒泡(常用);
  3. once:事件只触发一次(常用);
  4. capture:使用事件的捕获模式;
  5. self:只有event.target是当前操作的元素时才触发事件;
  6. passive:事件的默认行为立即执行,无需等待事件回调执行完毕;

在这里插入图片描述

Vue键盘事件

  1. Vue中常用的按键别名:

    回车=>enter

    删除=>delete(捕获“删除”和"退格”键)

    退出=>esc 空格=>space

    换行=>tab(特殊,必须配合keydown去使用)

    上=>up

    下=>down

    左 =>left

    右 =>right

  2. Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(短横线命名)

在这里插入图片描述

3. 系统修饰键(用法特殊):ctr1、alt、shift、meta

(1).配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。

(2).配合keydown使用:正常触发事件。

  1. 也可以使用keyCode去指定具体的按键(不推荐)

  2. Vue.config.keyCodes.自定义键名=键码,可以去定制按键别名

计算属性 computed

  1. 定义:要用的属性不存在,要通过已有属性计算得来。

  2. 原理:底层借助了objcet.defineproperty方法提供的getter和setter。

  3. get函数什么时候执行?

    (1).初次读取时会执行一次。
    (2).当依赖的数据发生改变时会被再次调用

  4. 优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便。

  5. 备注:

    (1).计算属性最终会出现在vm上,直接读取使用即可。
    (2).如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生改变

在这里插入图片描述

简写(在不使用set的情况下):

在这里插入图片描述

监视属性watch

  1. 当被监视的属性变化时, 回调函数自动调用, 进行相关操作

  2. 监视的属性必须存在,才能进行监视!!

  3. 监视的两种写法

    (1).new Vue时传入watch配置

    两种写法:

    watch:{
    				//正常写法
    				isHot:{
    					// immediate:true, //初始化时让handler调用一下
    					// deep:true,//深度监视
    					handler(newValue,oldValue){
    						console.log('isHot被修改了',newValue,oldValue)
    					}
    				}, 
    				//简写
    				 isHot(newValue,oldValue){
    					console.log('isHot被修改了',newValue,oldValue,this)
    				} 
    			}
    

    (2).通过vm.$watch监视

    两种写法:

	//正常写法
		 vm.$watch('isHot',{
			immediate:true, //初始化时让handler调用一下
			deep:true,//深度监视
			handler(newValue,oldValue){
				console.log('isHot被修改了',newValue,oldValue)
			}
		}) 

		//简写
		 vm.$watch('isHot',(newValue,oldValue)=>{
			console.log('isHot被修改了',newValue,oldValue,this)
		}) 

深度监视

  1. Vue中的watch默认不监测对象内部值的改变(一层)。
  2. 配置deep:true可以监测对象内部值改变(多层)。

备注:

  1. Vue自身可以监测对象内部值的改变,但Vue提供的watch默认不可以!
  2. 使用watch时根据数据的具体结构,决定是否采用深度监视。
watch:{
				isHot:{
					// immediate:true, //初始化时让handler调用一下
					//handler什么时候调用?当isHot发生改变时。
					handler(newValue,oldValue){
						console.log('isHot被修改了',newValue,oldValue)
					}
				},
				//监视多级结构中某个属性的变化
				/* 'numbers.a':{
					handler(){
						console.log('a被改变了')
					}
				} */
				//监视多级结构中所有属性的变化
				numbers:{
					deep:true,
					handler(){
						console.log('numbers改变了')
					}
				}
			}

computed和watch之间的区别

  1. computed能完成的功能,watch都可以完成。
  2. watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。

两个重要的小原则:

  1. 所被Vue管理的函数,最好写成普通函数,这样this的指向才是vm 或 组件实例对象。
  2. 所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数),最好写成箭头函数,
  3. 这样this的指向才是vm 或 组件实例对象。
watch:{
				firstName(val){
					setTimeout(()=>{
						console.log(this)
						this.fullName = val + '-' + this.lastName
					},1000);
				},
				lastName(val){
					this.fullName = this.firstName + '-' + val
				}
			}

绑定样式

1. class样式

写法:

class=“xxx” xxx可以是字符串、对象、数组。

​ 字符串写法适用于:类名不确定,要动态获取。

​ 对象写法适用于:要绑定多个样式,个数不确定,名字也不确定。

​ 数组写法适用于:要绑定多个样式,个数确定,名字也确定,但不确定用不用。

<div id="root">
		<!-- 绑定class样式--字符串写法,适用于:样式的类名不确定,需要动态指定 -->
		<div class="basic" :class="mood" @click="changeMood">{{name}}</div> <br /><br />

		<!-- 绑定class样式--数组写法,适用于:要绑定的样式个数不确定、名字也不确定 -->
		<div class="basic" :class="classArr">{{name}}</div> <br /><br />

		<!-- 绑定class样式--对象写法,适用于:要绑定的样式个数确定、名字也确定,但要动态决定用不用 -->
		<div class="basic" :class="classObj">{{name}}</div> <br /><br />
	</div>

2. style样式

写法:

​ :style="{fontSize: xxx}"其中xxx是动态值。

​ :style="[a,b]"其中a、b是样式对象。

<div id="root">
		<!-- 绑定style样式--对象写法 -->
		<div class="basic" :style="styleObj">{{name}}</div> <br /><br />
		<!-- 绑定style样式--数组写法 -->
		<div class="basic" :style="styleArr">{{name}}</div>
	</div>

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

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

相关文章

cesium 添加动态波纹效果 圆形扩散效果 波纹材质

一、扩展材质 /*** 水波纹扩散材质* param {*} options* param {String} options.color 颜色* param {Number} options.duration 持续时间 毫秒* param {Number} options.count 波浪数量* param {Number} options.gradient 渐变曲率*/function CircleWaveMaterialProperty(opt…

顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-回铃音补偿

文章目录 前言联系我们解决问题操作步骤 前言 回铃音&#xff1a; 当别人打电话给你时&#xff0c;你的电话响铃了&#xff0c;而他听到的声音叫做回铃音。回铃音是被叫方向主叫方传送&#xff0c;也是彩铃功能的基础。我们平时打电话听到的“嘟 嘟 嘟 嘟”的声音&#xff0c;就…

Golang | Leetcode Golang题解之第20题有效的括号

题目&#xff1a; 题解&#xff1a; func isValid(s string) bool {n : len(s)if n % 2 1 {return false}pairs : map[byte]byte{): (,]: [,}: {,}stack : []byte{}for i : 0; i < n; i {if pairs[s[i]] > 0 {if len(stack) 0 || stack[len(stack)-1] ! pairs[s[i]] {…

白盒测试-条件覆盖

​ 条件覆盖是指运行代码进行测试时&#xff0c;程序中所有判断语句中的条件取值为真值为假的情况都被覆盖到&#xff0c;即每个判断语句的所有条件取真值和假值的情况都至少被经历过一次。 ​ 条件覆盖率的计算方法为&#xff1a;测试时覆盖到的条件语句真、假情况的总数 / 程…

期货学习笔记-MACD指标学习2

MACD底背离把握买入多单的技巧 底背离的概念及特征 底背离指的是MACD指标与价格低点之间的对比关系&#xff0c;这里需要明白的是MACD指标的涨跌动能和价格形态衰竭形态之间的关系&#xff0c;如果市场价格创新低而出现衰竭形态同时也有底背离形态的出现&#xff0c;此时下跌…

2024认证杯数学建模A题思路模型代码

目录 2024认证杯数学建模A题思路模型代码&#xff1a;4.11开赛后第一时间更更新&#xff0c;获取见文末名片 2023年认证杯数学建模 2024年认证杯思路代码获取见此 2024认证杯数学建模A题思路模型代码&#xff1a;4.11开赛后第一时间更更新&#xff0c;获取见文末名片 2023年认…

关于AI发展的3种声音:杨植麟 朱啸虎 王小川

1、杨植麟&#xff1a;技术信仰派 2、朱啸虎&#xff1a;市场信仰派 3、王小川&#xff1a;中间派 References 对话月之暗面杨植麟&#xff1a;向延绵而未知的雪山前进朱啸虎讲了一个中国现实主义AIGC故事王小川想提出中国AGI第三种可能性

【C 数据结构】线性表

文章目录 【 1. 线性表 】【 2. 顺序存储结构、链式存储结构 】【 3. 前驱、后继 】 【 1. 线性表 】 线性表&#xff0c;全名为线性存储结构&#xff0c;线性表结构存储的数据往往是可以依次排列的&#xff08;不考虑数值大小顺序&#xff09;。 例如&#xff0c;存储类似 {1…

Golang快速入门教程(一)

目录 一、环境搭建 1.windows安装 2.linux安装 3.开发工具 二、变量定义与输入输出 1.变量定义 2.全局变量与局部变量 3.定义多个变量 4.常量定义 5.命名规范 6.输出 7.输入 三、基本数据类型 1.整数型 2.浮点型 3.字符型 4.字符串类型 转义字符 多行字符…

RN使用蓝牙扫描

我项目需要用到蓝牙模块,蓝牙扫描到设备并且获取到电量显示到页面上,因此我做了如下demo,使用了react-native-ble-plx这个插件 点击进入官方文档官方文档 1.安卓环境配置(ios暂定,还没做ios,不过下面的方法是兼容的,自行配置ios权限) android/app/src/main/AndroidManifest.xml…

API管理平台:你用的到底是哪个?

Apifox是不开源的&#xff0c;在github的项目只是readme文件&#xff0c;私有化需要付费。当然saas版目前是免费使用的。 一、Swagger 为了让Swagger界面更加美观&#xff0c;有一些项目可以帮助你实现这一目标。以下是一些流行的项目&#xff0c;它们提供了增强的UI和额外的功…

代码签名证书:确保软件安全与可信性的关键工具

在数字化时代&#xff0c;软件已成为各行各业的核心驱动力。然而&#xff0c;随着网络威胁日益复杂&#xff0c;用户对于软件来源的可靠性、内容的完整性和发布者的可信度提出了更高要求。为满足这一需求&#xff0c;代码签名证书应运而生&#xff0c;它通过先进的加密技术&…

【SpringBoot】-- mapstruct进行类型转换时Converter实现类不能自动生成代码问题解决

问题描述 我的问题如下&#xff1a; 应该在红色区域生成对应的转换细节&#xff0c;但是这里只返回了一个空对象 问题解决 加入lombok-mapstruct-binding依赖,也要注意依赖引用顺序问题 <dependency><groupId>org.projectlombok</groupId><artifactId&…

【智能优化算法详解】粒子群算法PSO量子粒子群算法QPSO

1.粒子群算法PSO 博主言简意赅总结-算法思想&#xff1a;大方向下个体自学习探索群体交流共享 对比适应度找到最优点 背景 粒子群算法&#xff0c;也称粒子群优化算法或鸟群觅食算法&#xff08;Particle Swarm Optimization&#xff09;&#xff0c; 缩写为 PSO。粒子群…

小白部署springboot+vue网站到服务器踩坑总结【维护更新篇】

目录 前言如何更新前端nginx安装和启动言归正传&#xff0c;更新前端 如何更新后端杀死进程 前言 在上一篇文章里详细介绍了怎样部署一个前后端分离的网站&#xff0c;链接: 链接在此 但是部署完之后&#xff0c;在本地的开发更新后&#xff0c;重新上传到服务器上又遇到了一些…

mybatis(5)参数处理+语句查询

参数处理&#xff0b;语句查询 1、简单单个参数2、Map参数3、实体类参数4、多参数5、Param注解6、语句查询6.1 返回一个实体类对象6.2 返回多个实体类对象 List<>6.3 返回一个Map对象6.4 返回多个Map对象 List<Map>6.5 返回一个大Map6.6 结果映射6.6.1 使用resultM…

[图解]DDD领域驱动设计伪创新-聚合根01

0 00:00:00,070 --> 00:00:06,010 今天我们来说一下领域驱动设计的另外一个伪创新&#xff0c;聚合根 1 00:00:06,870 --> 00:00:09,440 这个我们分为几个部分来讲 2 00:00:12,610 --> 00:00:15,580 前面说过很多遍&#xff0c;伪创新 3 00:00:16,760 --> 00:00…

登陆qq,经常收到qq游戏中心的推送信息,关闭推送信息

手动关闭推送信息的步骤&#xff1a; 1.点开左侧游戏中心 2、在打开界面&#xff0c;点击左下角自己的头像 3、打开设置中心&#xff0c;关闭所有的推送 4、完成关闭&#xff0c;不会推送了

基于springboot实现教学资源库系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现教学资源库系统演示 摘要 社会的进步&#xff0c;教育行业发展迅速&#xff0c;人们对教育越来越重视&#xff0c;在当今网络普及的情况下&#xff0c;教学模式也开始逐渐网络化&#xff0c;各大高校开始网络教学模式。 本文研究的教学资源库系统基于Sprin…

锂电池升降压转换利器:PW2224转换器,实现3.3V高效持续输出

描述&#xff1a; PW2224是一款专为锂电池供电设备设计的高效单电感降压-升压转换器。这款转换器能够在3V至4.2V的锂电池输入电压范围内工作&#xff0c;实现升降压模式自动切换&#xff0c;稳定输出3.3V电压&#xff0c;并持续提供高达1A的负载电流。此外&#xff0c;PW2224的…