Vue前端开发之组件事件

在一个组件中,不仅可以定义属性,还能定义事件,同时,在定义的事件中,还可以传递事件参数,校验参数,组件中定义的事件,可以被调用此组件的父级组件监听,当触发子级组件的事件时,可以接收组件传入的参数值,接下来分别进行详细阐述。

事件定义

如果需要给组件添加事件,可以使用emits 选项进行显示声明,声明的方式有两种,一种是数组格式,如下列代码所示。

<script>
export default {emits: ["myClk", "myFocus"]
}
</script>

在上述加粗代码中,使用emits 选项定义了两个事件,一个事件名为“myClk”,另一个事件名为“myFocus”,这两个事件是组件自定义的事件,可以被父级组件执行。除了上述这种数组格式外,事件还可以使用对象的格式进行声明,如下代码所示。

<script>
export default {emits: {myClk(payload){console.log(payload)},myFocus(payload){console.log(payload)}}
}
</script>

在述加粗代码中,使用对象格式声明了两个与数组格式同名的事件,事件名官方推荐使用驼峰语法(camelCase)来声明,以便于在父组件调用时,可以使用短横线分隔格式监听组件的事件,父组件使用v-on或@来监听子组件的事件,代码如下所示。

<template><myComponent 
@my-clk="fn" 
v-on:myFocus="fn2">
</myComponent>
</template>

在上述父组件监听子组件事件的代码中,使用@简写的方式比较常见,建议大家使用。

事件验证

与验证属性相同,验证事件必须在组件定义时,以对象的形式来描述;在对象中,事件被赋值给一个函数,函数的参数作为执行事件时的实参,通过验证传入实参的有效性,来决定函数返回true或false,从而完成事件执行时合法性的验证,代码如下所示。

<template><div><button @click="doLogin()">单击验证</button></div>
</template><script>
export default {emits: {submit({ userName, userPass }) {if (userName.length != '' && userPass.length != ''){return true;} else {return false;}}},methods: {doLogin() {this.$emit("submit", 
{ userName: "陶国荣", userPass: "123456" })}}
}
</script>

上述代码是一个子类组件,在该组件的代码中,首先添加了一个文字为“单击验证”的按钮,再通过“emits”选项,声明一个名称为“submit”的事件。

在事件声明过程中,验证执行事件时传入事件中的“userName”和“userPass”值是否为空,如果为空,则返回false,否则返回true值。

然后,当点击按钮时,调用$emit方法执行声明的事件并暴露给调用的父组件,该方法的第一个参数为已声明的事件名称,第二个参数为在事件触发时,向父组件传入的子组件数据,这些数据在传入时,将会进行有效性验证。

最后,当父组件在触发声明的“submit”事件时,如果传入值验证不成功,将会在控制台输出“Invalid event arguments”字样的提示信息。

事件监听和传参

组件事件的监听是指当子组件声明的事件被执行时,调用它的父组件就捕获取到了它的执行动作和事件数据,而要实现这种监听的效果,父组件必须绑定子组件中声明的事件,才能完成事件监听的效果,实现代码如下所示。

<template><div><login-item @submit="mySubmit"></login-item></div>
</template>
<script>
import LoginItem from './LoginItem.vue'
export default {components: {LoginItem},methods: {mySubmit(data) {console.log(data)}}
}
</script>

在上述加粗代码中,父组件可以使用@或v-on方式监听子组件声明的事件,当事件触发时,可以通过自定义的事件函数,获取触发时传入的数据,如上述代码中名称为mySubmit函数中的data值,就是子组件向父组件传入的参数。
在这里插入图片描述

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

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

相关文章

Springboot 整合 Java DL4J 打造金融风险评估系统

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

【Unity】ScriptableObject的应用:利用配方合成新物体

前一篇已经使用ScriptableObject(SO)类配置可放置物体&#xff0c;本篇探索更多的SO类应用场景。 需求分析 将若干指定物体放在工作台上&#xff0c;可以生成新的物体。 成果展示 Scene部分 准备工作台&#xff0c;放在工作台上的物体全部放在指定PlacedObjects空物体下。 …

实践1:创建 POST、GET、DELETE 请求

好的&#xff0c;以下是关于HTTP请求的详细内容&#xff1a; 一、HTTP请求 HTTP&#xff08;HyperText Transfer Protocol&#xff09;是用于在Web浏览器和服务器之间传输数据的协议。它是Web的基础&#xff0c;也是RESTful API通信的核心。HTTP请求由客户端&#xff08;如浏…

每日小题--买股票的最佳时机

目录 题目 分析 解题思路 完整代码 题目 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润…

企业一站式管理系统odoo的研究——PLM插件的搭建

大纲 1. 环境准备1.1 安装操作系统1.2 更新操作系统1.3 配置用户组和用户1.3.1 创建用户组 odoo1.3.2. 创建用户 odoo1.3.3. 设置用户 odoo 的密码1.3.4. 验证用户和组1.3.5. 将用户 odoo 添加到添加sudo组&#xff1a;1.3.6. 切到odoo用户 2. 安装 Odoo1. 安装依赖项目2.2. 安…

泰矽微重磅发布超高集成度车规触控芯片TCAE10

市场背景 智能按键和智能表面作为汽车智能化的重要部分&#xff0c;目前正处于快速发展阶段&#xff0c;电容式触摸按键凭借其操作便利性与小体积的优势&#xff0c;在汽车内饰表面的应用越来越广泛。对于空调控制面板、档位控制器、座椅扶手、门饰板、车顶控制器等多路开关的…

10月回顾 | Apache SeaTunnel社区动态与进展一览

各位热爱 Apache SeaTunnel 的小伙伴们&#xff0c;社区10月份月报来啦&#xff0c;请查收&#xff01; 这里将记录Apache SeaTunne社区每月动态和进展&#xff0c;欢迎关注。 月度Merge之星 感谢以下小伙伴上个月为 Apache SeaTunnel 所做的精彩贡献&#xff08;排名不分先…

__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined

VUE_PROD_HYDRATION_MISMATCH_DETAILS 未明确定义。您正在运行 Vue 的 esm-bundler 构建&#xff0c;它期望这些编译时功能标志通过捆绑器配置全局注入&#xff0c;以便在生产捆绑包中获得更好的tree-shaking优化。 Vue.js应用程序正在使用ESM&#xff08;ECMAScript模块&#…

浪潮信息“源”Embedding模型登顶MTEB榜单第一名

在自然语言处理&#xff08;NLP&#xff09;和机器学习领域&#xff0c;Embedding模型是将文本数据转换为高维向量表示的核心技术&#xff0c;直接影响NLP任务&#xff08;如文本分类、情感分析等&#xff09;的效果&#xff0c;对于提升模型性能和深入理解文本语义具有至关重要…

一文6个步骤带你实现接口测试入门

软件测试资料领取&#xff1a;[内部资源] 想拿年薪40W的软件测试人员&#xff0c;这份资料必须领取~ 软件测试面试刷题工具&#xff1a;软件测试面试刷题【800道面试题答案免费刷】 一、接口测试概述 1 什么是接口测试&#xff1a; 接口测试是测试系统组件间交互的一种测试…

成人失禁护理领导品牌可靠亮相广州SIC老博会 助力推动养老产业高质量发展

2024年11月15日至17日&#xff0c;第十届中国国际老龄产业博览会&#xff08;SIC老博会&#xff09;在广州保利世贸博览馆开幕。可靠股份&#xff08;股票代码&#xff1a;301009&#xff09;携成人失禁护理系列等经典及战略产品受邀亮相本次展会&#xff0c;全方位展示企业在产…

【macOS】Mac安装consola字体至系统和PyCharm的最简单教程

博主本人是Mac小白&#xff0c;刚使用Air没多久&#xff0c;今天coding的时候发现PyCharm的字体怎么看怎么不舒服&#xff0c;一对比才发现跟win里的有较大差别&#xff0c;查看Mac的PyCharm字体原来是默认的JetBrains Mono&#xff1a; 但由于PyCharm可以同步账号的所有设置再…

mysql delete后通过日志恢复数据

1.打开navicat查看删除时间 2.查看日志功能是否打开 show variables like %log_bin%;3. 查看日志文件所在目录 show variables like %datadir%;4.用这个路径去找日志文件&#xff0c;名字里带bin&#xff0c;最后修改时间和你第一步找到删除时间一样(如果之后有过其它增删改…

react-redux useSelector钩子 学习样例 + 详细解析

&#xff08;一&#xff09;react-redux useSelector 学习样例 详细解析 创建一个新项目&#xff0c;将依赖正确安装&#xff1a; npx create-react-app my-redux-app cd my-redux-app# 安装 Redux 和 React-Redux npm install redux react-redux# 安装 ajv npm install ajv#…

小地图制作(一)

(1)素材准备 (2)小地图的显示

中国书法、孙溟㠭浅析“象形印”

孙溟㠭浅析“象形印” “象形印”又称之为“图案印”、“肖像印”。刻有图案印章的统称。 图画印自战国、汉、魏都有&#xff0c;象形印一般铸有人物、动物等图案&#xff0c;如&#xff1a;龙、虎、雀、凤、龟等都是吉祥的图案&#xff0c;有白文&#xff0c;也有朱文。取材…

腾讯云双11最强攻略:如何选购优惠产品,薅最划算的羊毛

目录 一、首选优惠产品 二、可参与拼团的产品&#xff1a;超值组合优惠 三、不推荐购买的产品 四、注意事项与优惠最大化技巧 总结 腾讯云的双11活动力度空前&#xff0c;适合个人开发者、中小企业甚至是大型公司。这份攻略将帮你了解该购买哪些产品&#xff0c;不该购买哪…

外网访问 WebDav 服务

从外部网络环境&#xff08;比如异地和家中网络&#xff09;来访问公司内网的 WebDav 服务&#xff08;基于 IIS &#xff09;并映射成本地虚拟磁盘。 步骤如下 第一步 在公司内网的电脑上设置 webDav。 1&#xff0c;找到【控制面板】&#xff0c;双击进入。 2&#xff0c…

基于卷积神经网络的草莓叶片病虫害识别与防治系统,vgg16,resnet,swintransformer,模型融合(pytorch框架,python代码)

更多图像分类、图像识别、目标检测等项目可从主页查看 功能演示&#xff1a; 草莓叶片病虫害识别与防治系统&#xff0c;vgg16&#xff0c;resnet&#xff0c;swintransformer&#xff0c;模型融合&#xff0c;卷积神经网络&#xff08;pytorch框架&#xff0c;python代码&…