vue知识点(1)

server/2025/3/10 2:35:33/

refreactive的区别

ref

用途:用于创建一个响应式的基本类型(string、number、boolean)或者引用类型(object、array)的数据。
返回值:返回一个带有.value属性的对象,访问或者修改数据时需要通过.value进行。
使用场景:适合处理单个值或需要明确访问.value的场景。

reactive

用途:用于创建一个响应式的对象或者数组。
返回值:返回一个响应式的Proxy对象,可以直接访问或修改属性,无需.value
使用场景:适合处理复杂对象或者嵌套数据结构。

注意:在一个对象或者数组中,如果想要访问更深层的属性或者元素,推荐使用reactive
使用reactive只需要通过obj.a.b.carr[0].name的方式访问深层属性或元素,不需要额外的.value
使用ref则需要通过obj.value.a.b.carr[0].value.name的方式访问深层属性或元素

计算属性

计算属性是通过 computed 函数创建的。
计算属性默认是只读的,但可以通过定义 getset 函数来创建一个可写的计算属性。
get 用于获取计算属性的值。 set 用于设置计算属性的值。

<template><div><h1>{{ alwaysSmall }}</h1>//这时+1不是改变alwaysSmall的值,只是显示时alwaysSmall的值+1<h1>{{ alwaysSmall + 1 }}</h1></div>
</template>
<script setup>
import { ref, computed } from 'vue'
import { onMounted } from 'vue'const count = ref(2)const alwaysSmall = computed({//get(previous):获取当前值的方法。get(previous) {console.log('previous', previous)// 这个计算属性在 count 的值小于或等于 3 时,将返回 count 的值。// 当 count 的值大于等于 4 时,将会返回满足我们条件的最后一个值// 直到 count 的值再次小于或等于 3 为止。if (count.value <= 3) {return count.value}return previous},//set(newValue):设置当前值的方法。当外部尝试修改alwaysSmall的值时,此方法会被调用。它将count设置为新值的两倍。set(newValue) {console.log('newValue', newValue)count.value = newValue * 2},
})onMounted(() => {console.log(alwaysSmall.value)//在外部修改alwaysSmall的值alwaysSmall.value = 10
})
</script>

注意: 计算属性值会基于其响应式依赖被缓存。一个计算属性仅会在其响应式依赖更新时才重新计算。

v-ifv-show

v-if

条件性地添加或移除 DOM 元素

v-show

通过 CSSdisplay 控制显示和隐藏(display: none),元素始终会被渲染到 DOM

注意:当 v-ifv-for 同时存在于一个元素上的时候,v-if 会首先被执行。

事件修饰符

在处理事件时调用 event.preventDefault()event.stopPropagation() 是很常见的。
event.preventDefault()event.stopPropagation() 是用于控制事件行为的两个重要方法。它们在处理 DOM 事件时非常有用,尤其是在需要阻止默认行为或阻止事件冒泡的场景中。
事件修饰符是用 . 表示的指令后缀。
常用的事件修饰符:
.stop:阻止事件冒泡。

<template><div @click="parentClick">//点击按钮时,只会触发 childClick,不会触发 parentClick。<button @click.stop="childClick">点击我</button></div>
</template>

.prevent:阻止默认行为。

<template>//在表单提交时,浏览器的默认行为是刷新页面。//使用 .prevent 修饰符来阻止默认行为,在表单提交时不刷新页面。<form @submit.prevent="onSubmit"><input type="text" v-model="name" /><button>提交</button></form>
</template><script setup lang="ts">
import { ref } from 'vue'
const name = ref('')
const onSubmit = () => {console.log('表单提交,但不刷新页面')
}
</script>

.self:只有当事件是从当前元素触发时才会调用事件处理函数。

<template>//一般情况下点击子元素会冒泡触发父元素上的事件  //使用.self后,点击按钮时,只会触发 childClick。//使用.self后,点击父元素时,才会触发 parentClick。<div @click.self="parentClick"><button @click="childClick">点击我</button></div>
</template><script setup>
const parentClick = () => {console.log('父元素点击')
}
const childClick = () => {console.log('子元素点击')
}
</script>

.capture:使用捕获模式监听事件。默认情况下,事件是从内向外冒泡的,使用 .capture 后,事件会从外向内捕获。

<template>//点击按钮时,先触发 parentClick,再触发 childClick。<div @click.capture="parentClick"><button @click="childClick">点击我</button></div>
</template><script setup>
const parentClick = () => {console.log('父元素点击')
}
const childClick = () => {console.log('子元素点击')
}
</script>

.once:事件只会触发一次。

<template>//点击事件最多被触发一次 onClick 方法<button @click.once="onClick">点击我</button>
</template><script setup>
const onClick = () => {console.log('点击事件只触发一次')
}
</script>

.passive:提升滚动事件的性能,告诉浏览器不要阻止事件的默认行为。一般用于触摸事件的监听器,可以用来改善移动端设备的滚屏性能

<template>//滚动事件的默认行为 (scrolling) 将立即发生而非等待 `onScroll` 完成<div @scroll.passive="onScroll" style="height: 200px; overflow: auto"><div style="height: 1000px">滚动我</div></div>
</template><script>
const onScroll = () => {console.log('滚动中')
}
</script>

按键修饰符

.enter

监听回车键。

<template><input @keyup.enter="onEnter" placeholder="按下回车">
</template><script setup lang="ts">
const onEnter = () => {console.log('按下回车')
}
</script>

.esc

监听 Esc 键。

<template><input @keyup.esc="onEsc" placeholder="按下 Esc">
</template><script setup>
const onEsc = () => {console.log('按下 Esc')
}
</script>

其他常用按键修饰符:
.tab.delete.space.up.down.left.right

系统按键修饰符

.ctrl

监听 Ctrl 键。

<template><button @click.ctrl="onCtrlClick">按住 Ctrl 点击我</button>
</template><script setup>
const onCtrlClick = () => {console.log('按住 Ctrl 点击')
}
</script>

.alt

监听 Alt 键。

<template>// Alt + Enter,修饰语可以使用链式书写<input @keyup.alt.enter="clear" />
</template><script setup>
const clear = () => {console.log('Alt + Enter')
}
</script>

注意:使用链式书写修饰符时需要注意调用顺序,因为相关代码是以相同的顺序生成的。

其他系统修饰键:
.shift.meta(Windows 上是 Win 键,Mac 上是 Command 键)


http://www.ppmy.cn/server/173823.html

相关文章

大白话 CSS 中transform属性的常见变换类型(平移、旋转、缩放等)及使用场景

大白话 CSS 中transform属性的常见变换类型&#xff08;平移、旋转、缩放等&#xff09;及使用场景 答题思路 先解释 transform 属性是啥&#xff1a;让大家明白 transform 是 CSS 里用来对元素进行变形操作的一个属性&#xff0c;就像有个神奇的工具能改变元素的样子。分别介…

【2025】基于Python+Django的酒店民宿预订管理系统(源码+调试+答疑+学习资料)

目录 一、项目介绍&#xff1a; 二、文档学习资料&#xff1a; 三、模块截图&#xff1a; 四、开发技术与运行环境&#xff1a; 五、代码展示&#xff1a; 六、数据库表截图&#xff1a; 该项目含有源码、文档、PPT、图文修改教程、配套开发软件、软件安装教程、项目发布教…

setlocale()的参数,“zh_CN.UTF-8“, “chs“, “chinese-simplified“的差异。

在 C/C 中&#xff0c;setlocale() 函数的参数 zh_CN.UTF-8、chs 和 chinese-simplified 均用于设置中文简体环境&#xff0c;但它们的语义、平台支持和编码行为存在显著差异&#xff1a; ​1. zh_CN.UTF-8&#xff08;推荐&#xff09;​ ​含义&#xff1a; zh_CN: 中文&…

【Spring Boot 接入 MongoDB】

【Spring Boot 接入 MongoDB】 在 Spring Boot 项目中接入 MongoDB 是一个常见的需求&#xff0c;以下是详细的步骤和配置方法&#xff1a; 1. 添加依赖 在 pom.xml 文件中添加 Spring Data MongoDB 的依赖。 <dependency><groupId>org.springframework.boot<…

FPGA有关HDMI的一些知识,程序源自bilibi正点原子

回顾串口知识&#xff0c;RS232&#xff08;两路单端信号传输&#xff09;&#xff1b;RS422&#xff08;四路差分信号传输&#xff0c;两路接收两路发送&#xff09;延长数据的传输距离和抗干扰能力&#xff1b;RS485&#xff08;两路差分信号传输&#xff09;&#xff0c;简化…

MySQL数据库误删恢复_mysql 数据 误删

2、BigLog日志相关 2.1、检查biglog状态是否开启 声明: 当前为mysql版本5.7 当前为mysql版本5.7****当前为mysql版本5.7 2.1.1、Navicat工具执行 SHOW VARIABLES LIKE LOG_BIN%;OFF 是未开启状态&#xff0c;如果不是ON 开启状态需要开启为ON。{默认情况下就是关闭状态} 2.…

单链表基本操作的实现与解析(补充)

目录 一、引言 二、代码实现 遍历考虑情况 三、操作解析 查找操作&#xff08;sltfind函数&#xff09; 前插操作&#xff08;sltinsert函数&#xff09; 后插操作&#xff08;sltinsertafter函数&#xff09; 前删操作&#xff08;slterase函数&#xff09; 后删操作&…

一文读懂深度学习中的损失函数quantifying loss —— 作用、分类和示例代码

在深度学习中&#xff0c;quantifying loss&#xff08;量化损失&#xff09;是指通过数学方法计算模型预测值与真实值之间的差异&#xff0c;以衡量模型的性能。损失函数&#xff08;Loss Function&#xff09;是量化损失的核心工具&#xff0c;它定义了模型预测值与真实值之间…