Vue组件之间进行传值的两种方式

在这里插入图片描述

在 Vue 中,组件之间传值是一个常见的操作,通常有两种方式来传递数据:props 和事件(Event Bus)。下面我将详细介绍这两种方式。

1. 通过 Props 传递数据

Props 是一种用于从父组件向子组件传递数据的方式。在子组件中,你可以声明 props,然后父组件可以将数据传递给子组件。

父组件向子组件传递数据:

<template><div><ChildComponent :message="parentMessage" /></div>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent},data() {return {parentMessage: '我是IT小辉同学'};}
};
</script>

子组件接收并使用 Props:

<template><div><p>{{ message }}</p></div>
</template><script>
export default {props: {message: String // 指定 props 的类型}
};
</script>

在这个例子中,message 是一个 prop,它的类型被指定为字符串。父组件通过:message="parentMessage"将数据传递给子组件。当然,我们可以指定messagel类型为number,这个时候我们传值也会正常接收,但是会在控制台报出警告,所以呢,我们可以通过这种方式去进行传值!当然,有时候对于数据类型不用进行限制的时候,我们可以使用简单接收,直接这样接参:

props:[name,age,sex]

同时,我们可以对于参数是否为必填也做限制,这样就是比较复杂的传参限制了,如下:

 props: {message: {tyoe: String,required: true}}

2. 通过事件传递数据(Event Bus)

Event Bus 是一种通过 Vue 实例进行事件通信的方式,允许不同组件之间进行解耦的通信。你可以使用一个全局的 Vue 实例作为事件中心,然后在需要通信的组件中触发和监听事件。

创建一个全局的 Event Bus:

// EventBus.js
import Vue from 'vue';
export const EventBus = new Vue();

在发送组件中触发事件:

<template><button @click="sendMessage">发送消息</button>
</template><script>
import { EventBus } from './EventBus.js';export default {methods: {sendMessage() {EventBus.$emit('message-sent', '你好啊,我是小辉同学!');}}
};
</script>

在接收组件中监听事件:

<template><div><p>{{ message }}</p></div>
</template><script>
import { EventBus } from './EventBus.js';export default {data() {return {message: ''};},mounted() {EventBus.$on('message-sent', message => {this.message = message;});}
};
</script>

在这个例子中,通过 Event Bus,子组件可以向全局事件中心发送事件,而另一个组件可以监听并在事件触发时执行相应的操作。

这两种方式都可以用来传递数据,但建议使用 Props 来传递父子组件之间的数据,因为它更具有明确性和可维护性,而 Event Bus 可以用于处理跨越多个组件的通信或解耦的情况,更加随意!

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

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

相关文章

低代码平台:IVX 重新定义编程

目录 &#x1f36c;一、写在前面 &#x1f36c;二、低代码平台是什么 &#x1f36c;三、为什么程序员和技术管理者不太可能接受“低代码”平台&#xff1f; &#x1f36d;1、不安全&#xff08;锁定特性&#xff09; &#x1f36d;2、不信任 &#x1f36c;四、IVX低代码平台 &a…

混合查询多家快递,快速掌握物流信息

在现代社会&#xff0c;快递服务已成为我们日常生活的重要组成部分。无论是购物还是文件传递&#xff0c;我们都需要快递服务的帮助。然而&#xff0c;不同的快递公司需要不同的查询方法&#xff0c;这无疑增加了我们的查询难度。因此&#xff0c;有没有一种方法可以让我们一次…

2023开学礼中国海洋大学《乡村振兴战略下传统村落文化旅游设计》许少辉新海洋图书馆

2023开学礼中国海洋大学《乡村振兴战略下传统村落文化旅游设计》许少辉新海洋图书馆

开启Clash和系统代理后Chrome无法打开网页但Edge正常

今天早上打开电脑准备摸鱼&#xff0c;发现Chrome打不开网页了。检查Clash正常&#xff0c;切换了节点&#xff0c;依然不行。关闭系统的代理可以解决。不然只提示ERR_TIMED_OUT。 各种研究配置&#xff0c;然后发现Edge却又不受影响。 通过火绒发现Chrome是有连接到7890端口的…

Prompt Tuning训练过程

目录 0. 入门 0.1. NLP发展的四个阶段&#xff1a; Prompt工程如此强大&#xff0c;我们还需要模型训练吗&#xff1f; - 知乎 Prompt learning系列之prompt engineering(二) 离散型prompt自动构建 Prompt learning系列之训练策略篇 - 知乎 ptuning v2 的 chatglm垂直领域训练记…

【2023集创赛】国家集创中心杯三等奖:不对称轻失配运算放大器

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;国家集创中心杯三等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰富电…

DHCP工作过程详解

只有是一个网段的&#xff0c;它才会发送 ARP 请求&#xff0c;获取 MAC 地址。如果发现不是呢&#xff1f;Linux 默认的逻辑是&#xff0c;如果这是一个跨网段的调用&#xff0c;它便不会直接将包发送到网络上&#xff0c;而是企图将包发送到网关。 因为网关要和当前的网络至…

Kubernetes技术--k8s核心技术持久化存储

有时候需要在集群中进行一些重要的数据进行持久化存储,然后需要的时候再进行挂载,那么下面我们一起来看看如何实现数据的持久化存储操作。 1.nfs网络存储 -1.找一台服务器做nfs的服务端,安装nfs。(这里我们直接在master上实现)。 这里应该找再单独的搭建一个node节点做持…

ESP-C3入门22. 基于VSCODE使用内置JTAG调试程序

ESP-C3入门22. 基于VSCODE使用内置JTAG调试程序 一、简介1. 内置 jtag 介绍2. OpenOCD3. 准备工作 二、操作步骤1. 接线2. 在VSCode设置端口等信息3. 测试编译烧录 三、调试程序 一、简介 1. 内置 jtag 介绍 在ESP32中&#xff0c;内置了一个用于JTAG调试的特殊程序&#xff…

leetCode动态规划“不同路径II”

迷宫问题是比较经典的算法问题&#xff0c;一般可以用动态规划、回溯等方法进行解题&#xff0c;这道题目是我昨晚不同路径这道题趁热打铁继续做的&#xff0c;思路与原题差不多&#xff0c;只是有需要注意细节的地方&#xff0c;那么话不多说&#xff0c;直接上coding和解析&a…

2023年7月京东投影仪行业品牌销售排行榜(京东大数据)

鲸参谋监测的京东平台7月份投影仪行业销售数据已出炉&#xff01; 7月份&#xff0c;投影仪市场呈现增长趋势。根据鲸参谋平台的数据可知&#xff0c;7月京东平台投影仪的销量将近20万&#xff0c;同比增长约16%&#xff1b;销售额将近3.8亿&#xff0c;同比增长约4%。 ​*数据…

uni-app 之 v-on:click点击事件

uni-app 之 v-on:click点击事件 image.png <template><!-- vue2的<template>里必须要有一个盒子&#xff0c;不能有两个&#xff0c;这里的盒子就是 view--><view>--- v-on:click点击事件 ---<view v-on:click"onclick">{{title}}<…