原生事件监听及组件内置事件处理

监听事件

我们可以使用 v-on 指令 (简写为 @) 来监听 DOM 事件,并在事件触发时执行对应的 JavaScript。用法:v-on:click="handler" 或 @click="handler"。

事件处理器 (handler) 的值可以是:

内联事件处理器:事件被触发时执行的内联 JavaScript 语句 (与 onclick 类似)。

方法事件处理器:一个指向组件上定义的方法的属性名或是路径。

先简单演示一下v-on指令,代码如下:

复制代码
<template>
	<view>
		<view class="box" v-on:click="onClick">
			
		</view>
	</view>
</template>

<script setup>
	
	function onClick(){
		console.log(12321)
	}
</script>

<style>
.box{
	width: 200px;
	height:200px;
	background: orange;
}
</style>

在script中写入函数onClick,函数作用为打印12321,然后用v-on:click指令关联onClick函数,效果如下:

打印成功,现在我们设定值num,设定每点击一次,它的值都会加1,代码如下:

复制代码
<template>
	<view>
		<view class="box" v-on:click="onClick">
			{{num}}
		</view>
	</view>
</template>

<script setup>
	import {ref} from "vue" ;
	const num = ref(1) ;
	function onClick(){
		num.value ++ ;
	}
</script>

<style>
.box{
	width: 200px;
	height:200px;
	background: orange;
}
</style>

效果如下:

接下来, 定义一个颜色变量,然后在template中调用,代码如下:

复制代码
<template>
	<view>
		<view class="box" @click="onClick" :style="{background:color}">
			{{num}}
		</view>
	</view>
</template>

<script setup>
	import {ref} from "vue" ;
	const num = ref(1) ;
	const color = ref("#fc359a")
	function onClick(){
		num.value ++ ;
	}
</script>

<style>
.box{
	width: 200px;
	height:200px;
	background: orange;
}
</style>

效果如下:

颜色可以由# + 6个数字构成,那么,我们现在写个函数,让其随机生成6个数字作为#后面的六位数,然后将其赋值给变量color,这样就可以实现,点击跳转随机颜色了,代码如下:

复制代码
<template>
	<view>
		<view class="box" @click="onClick" :style="{background:color}">
			{{num}}
		</view>
	</view>
</template>

<script setup>
	import {ref} from "vue" ;
	const num = ref(1) ;
	const color = ref("#fc359a")
	function onClick(){
		num.value ++ ;
		color.value = "#" + String(Math.random()).substring(3,9) ;
	}
</script>

<style>
.box{
	width: 200px;
	height:200px;
	background: orange;
}
</style>

效果如下:

Switch组件的@change属性内置了返回值(true or false),可以通过switch组件来控制button按钮的loading属性。创建函数,在函数中,将返回值赋值给loading的关联变量就可以了,代码如下:

复制代码
<template>
	<view>
		<view class="box" @click="onClick" :style="{background:color}">
			{{num}}
		</view>
	</view>
	<switch @change="onchange"></switch>
	<button type="primary" :loading="isloading">普通按钮</button>
</template>

<script setup>
	import {ref} from "vue" ;
	const num = ref(1) ;
	const color = ref("#fc359a")
	const isloading = ref(true)
	function onClick(){
		num.value ++ ;
		color.value = "#" + String(Math.random()).substring(3,9) ;
	}
	function onchange(e){
		isloading.value = e.detail.value
		console.log(e.detail.value)
	}
</script>

<style>
.box{
	width: 200px;
	height:200px;
	background: orange;
}
</style>

效果如下:

相关推荐
50万马克的面包6 小时前
C 语言第18讲:预处理详解
c语言·开发语言·windows
昼猫7 小时前
前端打印分页技术探讨与 PrintomJs 方案
javascript·浏览器
gCode Teacher 格码致知7 小时前
Javascript提高:点击飘忽不定的气球,气球爆炸并增加分数-由Deepseek产生
javascript·css·css3
费曼学习法7 小时前
React Hooks 闭包陷阱:为什么 useState 拿不到最新值?
javascript·react.js
ChalesXavier7 小时前
SSE(Server-Sent Events,服务器发送事件):从协议细节到流式处理实战
javascript
APIshop7 小时前
Java 调用阿里巴巴商品详情接口实战指南:完整流程与代码实现
java·开发语言
努力努力再努力wz7 小时前
【Qt 入门系列】从应用场景到开发环境:建立对 Qt 的第一层认知
c语言·开发语言·数据库·c++·b树·qt·缓存
无限进步_7 小时前
【C++】红黑树完全解析:从概念到插入与平衡维护
java·c语言·开发语言·数据结构·c++·后端·算法
加勒比海带667 小时前
人工智能前沿——「试问当前国外AI大模型哪家强?」
大数据·开发语言·图像处理·人工智能
非凡ghost7 小时前
视频下载神器:直播回放、视频链接一键抓取,还能自动监听!
java·前端·javascript·音视频