【Vue】props与$emit的简单理解

Vue组件

组件是Vue中不可或缺的一个功能,它可以将一个页面划分为多个独立的内部组件,方便代码的管理。

定义组件

<body><div id="App"><bcomp></bcomp></div><script>const app = Vue.createApp({})const buttonComponent = {// 组件的HTML渲染模板template: `<div><button>按钮</button></div>`}app.component('bcomp', buttonComponent) // 将Component组件绑定到应用实例中,并取别名compapp.mount('#App') // 将app应用实例绑定到id=App的HTML元素上</script>
</body>

这是一个最简单的组件,buttonComponent的作用就是在页面中渲染出一个按钮。
app.component()函数可以将buttonComponent组件绑定到app实例中

渲染结果

在这里插入图片描述

Props选项

props定义的属性是提供给外部进行设置使用的

定义props属性

<body><div id="App"><bcomp button-title="按钮1"></bcomp></div><script>const app = Vue.createApp({})const buttonComponent = {// 定义外部属性props: ['buttonTitle'],// 组件的HTML渲染模板template: `<div><button>{{ buttonTitle }}</button></div>`}app.component('bcomp', buttonComponent) // 将Component组件绑定到应用实例中,并取别名compapp.mount('#App') // 将app应用实例绑定到id=App的HTML元素上</script>
</body>

在这里插入图片描述
可以看出props先从外部获取了属性值,然后将属性值在组件内部进行使用。

渲染结果

在这里插入图片描述

$emit方法

在组件内部可以使用$emit方法来传递事件。
比如现在有两个组件,子组件负责渲染按钮的HTML界面,父组件负责按钮的点击事件。
子组件渲染完按钮后,按钮的点击事件不是自己做而是需要传给父组件去做,这时候就需要用到$emit方法了。
假如我们的任务是:点击按钮后需要在控制台输出一个"emit"。

$emit简单使用

<body><div id="App"><bcomp button-title="按钮1" @click-to-log="log"></bcomp></div><script>const app = Vue.createApp({methods: {// log函数log() {console.log('emit')}},})const buttonComponent = {// 定义外部属性props: ['buttonTitle'],// 组件的HTML渲染模板template: `<div><button @click="$emit('clickToLog')">{{ buttonTitle }}</button></div>`}app.component('bcomp', buttonComponent) // 将Component组件绑定到应用实例中,并取别名compapp.mount('#App') // 将app应用实例绑定到id=App的HTML元素上</script>
</body>

在这里,buttonComponent组件中在按钮渲染处定义了一个click事件,但是click事件不是自己做而是父组件做,因此它将click事件重命名为click-to-log传递出去(正常情况一般是@click="$emit('click')",即不修改名称,这里为了防止搞混专门把命名改成都不一样的了)。
父组件app收到后看到click-to-log事件需要一个控制台输出函数log,于是在自己的methods中定义了一个log函数在控制台输出"emit"。
在这里插入图片描述

输出结果

点击按钮后控制台输出结果为:
在这里插入图片描述

总结

本文旨在记录我自己学习期间遇到的问题,并非教学,所以只写了最最简单的应用和我自己的理解,并没有深挖其原理。

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

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

相关文章

【2023传智杯-新增场次】第六届传智杯程序设计挑战赛AB组-ABC题复盘解题分析详解【JavaPythonC++解题笔记】

本文仅为【2023传智杯-第二场】第六届传智杯程序设计挑战赛-题目解题分析详解的解题个人笔记,个人解题分析记录。 本文包含:第六届传智杯程序设计挑战赛题目、解题思路分析、解题代码、解题代码详解 文章目录 一.前言二.赛题题目A题题目-B题题目-C题题目-二.赛题题解A题题解-…

Servlet should have a mapping

第一种可能&#xff1a; 你就是没写Servlet <servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 配置springMVC需要加载的配置文件--><init-par…

Android studio生成二维码

1.遇到的问题 需要生成一个二维码&#xff0c;可以使用zxing第三方组件&#xff0c;增加依赖。 //生成二维码 implementation com.google.zxing:core:3.4.1 2.代码 展示页面 <ImageViewandroid:id"id/qrCodeImageView"android:layout_width"150dp"an…

ubuntu 如何修改主机名称

UBUNTU 2018.04 LTS 64位 修改当前电脑的主机名称。 操作步骤如下&#xff1a; 假设你的主机名为AAAAA &#xff0c; 打算修改为BBBBB。开机进入桌面。 打开一个终端。命令行下&#xff0c;使用vi /etc/hostname指令&#xff0c;编辑主机名称。将hostname文件里的AAAAA改为BB…

【Linux】echo命令使用

​echo命令 功能是在显示器上显示一段文字&#xff0c;一般起到一个提示的作用。此外&#xff0c;也可以直接在文件中写入要写的内容。也可以用于脚本编程时显示某一个变量的值&#xff0c;或者直接输出指定的字符串。 ​ 著者 由布莱恩福克斯和切特拉米撰写。 语法 echo […

Flum--环境搭建实验

1.解压flum安装包 解压到/opt/module下&#xff1a; tar -zxvf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/ 2.修改flum名字&#xff1a; mv /opt/module/apache-flume-1.9.0-bin /opt/module/flume 3.将lib文件夹下的guava-11.0.2.jar删除以兼容Hadoop…

图像万物分割——Segment Anything算法解析与模型推理

一、概述 在视觉任务中&#xff0c;图像分割任务是一个很广泛的领域&#xff0c;应用于交互式分割&#xff0c;边缘检测&#xff0c;超像素化&#xff0c;感兴趣目标生成&#xff0c;前景分割&#xff0c;语义分割&#xff0c;实例分割&#xff0c;泛视分割等。 交互式分割&am…

设计模式之结构型模式(适配器、桥接、组合、享元、装饰者、外观、代理)

文章目录 一、结构型设计模式二、适配器模式三、桥接模式四、组合模式五、享元模式六、装饰者模式七、外观模式八、代理设计模式 一、结构型设计模式 这篇文章我们来讲解下结构型设计模式&#xff0c;结构型设计模式&#xff0c;主要处理类或对象的组合关系&#xff0c;为如何…

【已解决】ModuleNotFoundError: No module named ‘IPython‘

问题描述 Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named IPython 解决方法 pip install ipython 完结撒花 我并不想穿过荆棘去到黎明&#xff0c;我猜也没有人会想

proftpd安全加固:禁用匿名登录

其实&#xff0c;proftpd默认是禁止匿名登录的。今天我们反其道&#xff0c;研究一下如何开启匿名登录。清楚了怎么破防&#xff0c;才能更好得防。 查看/etc/proftpd.conf 配置文件&#xff1a; # A basic anonymous configuration, with an upload directory # Enable this…

计算机设备管理器如何看内存,怎么查看电脑配置信息?3种方法,让你掌握电脑全部信息!...

转载&#xff1a;https://blog.csdn.net/weixin_35849957/article/details/118512756?spm1001.2014.3001.5502 原标题&#xff1a;怎么查看电脑配置信息&#xff1f;3种方法&#xff0c;让你掌握电脑全部信息&#xff01; 电脑的配置决定了电脑性能高低以及运行速度。而电脑…

Emacs之Plantuml用于复杂UML类图(Markdown用于简单类图)(一百三十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

python主流开发工具排名,python开发工具有哪些

本篇文章给大家谈谈python的开发工具软件有哪些&#xff0c;以及python主流开发工具排名&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 python中用到哪些软件 一、Python代码编辑器1、sublime Textsublime Text是一款非常流行的代码编辑器&#xff0c;支持P…

STM32L051使用HAL库操作实例(13)- 读取IAQ-CORE-C传感器实例

目录 一、前言 二、传感器参数 三、STM32CubeMX配置&#xff08;本文使用的STM32CubeMX版本为6.1.2&#xff09;例程使用模拟I2C进行数据读取 1.MCU选型 2.使能时钟 3.时钟配置 4.GPIO口配置 四、配置STM32CubeMX生成工程文件 五、点击GENERATE CODE生成工程文件 六、…

Kubersphere应用【二】Docker安装

一、Docker安装 1.下载Docker安装包 【地址】Index of linux/static/stable/x86_64/ 2.上传至服务器 # 解压文件 tar -xvf docker-20.10.10.tgz# 将docker 目录中的所有文件复制至/usr/bin/目录下 cp docker/* /usr/bin 3.配置docker.service文件 vim /usr/lib/systemd/sy…

arm平台编译so文件回顾

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、几个点二、回顾过程 1.上来就执行Makefile2.编译第三方开源库.a文件 2.1 build.sh脚本2.2 Makefile3.最终编译三、其它知识点总结 前言 提示&#xff1a;这…

MSSQL存储过程的功能和用法(简明扼要)

官方文档 存储过程&#xff08;数据库引擎&#xff09; - SQL Server | Microsoft Learn Transact-SQL 参考&#xff08;数据库引擎&#xff09; - SQL Server | Microsoft Learn 定义 存储过程可以用编程语言的方法来类比&#xff0c;有输入输出。区别是其使用SQL表达业务…

spring 单元测试 Junit

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

解决打印机超出字节之使用PHP拆分字符串并保留分隔符

在开发过程中&#xff0c;我们经常需要将一个长字符串拆分成多个片段&#xff0c;并且保留原始字符串中的分隔符。在本篇教程中&#xff0c;我们将使用PHP编写一个函数来实现这个功能。 首先&#xff0c;让我们来看一下我们要解决的问题。假设我们有一个长字符串&#xff0c;我…

pywinrm 解析输出为 dict 格式 字典格式

s winrm.Session(host, auth(username, password))task_folder \RPA\\ # 运行 schtasks 命令来列出任务计划程序 command schtasks /query /fo csv # command fschtasks /query /fo csv /tn {task_folder} # command fschtasks /query /fo csv /tn "{task_folder}\\…