Vue组件通信的方式

文章目录

  • props 父传子
  • $emit 子传父
  • 事件总线(Event Bus)
  • 使用Vuex\Pinia状态管理库
  • 使用provide/inject

props 父传子

父组件向子组件传递数据:通过props属性将数据从父组件传递给子组件。

<template>  <div>  <child-component :message="parentMessage"></child-component>  </div>  
</template>  <script>  
import ChildComponent from './ChildComponent.vue';  export default {  components: {  ChildComponent  },  data() {  return {  parentMessage: 'Hello from Parent'  };  }  
};  
</script>

在 Vue 2 中,子组件可以直接使用props获取

<template>  <div>  <p>{{ message }}</p>  </div>  
</template>  <script>  
export default {  props: ['message'], // 声明要接收的props  created() {  console.log(this.message); // 在组件的生命周期钩子中访问props  }  
};  
</script>

在 Vue 3 中,你可以使用 defineProps 来定义组件的 props

<script setup lang="ts">  
import { defineProps } from 'vue'  const props = defineProps({  message: String,  count: {  type: Number,  default: 0  }  
})  
</script>  <template>  <div>  <h1>{{ message}}</h1>  <p>Count: {{ count }}</p>  </div>  
</template>

$emit 子传父

通过$emit方法在子组件中触发一个事件,然后在父组件中监听这个事件。

子组件中:

<template>  <div>  <button @click="sendMessageToParent">Click me</button>  </div>  
</template>  <script>  
export default {  methods: {  sendMessageToParent() {  const childMessage = 'Hello from Child';  this.$emit('getChildData', childMessage);  }  }  
};  
</script>

父组件中:

<template>  <div>  <child-component @getChildData="handleChildMessage"></child-component>  </div>  
</template>  <script>  
import ChildComponent from './ChildComponent.vue';  export default {  components: {  ChildComponent  },  methods: {  handleChildMessage(message) {  console.log(message); // 输出 'Hello from Child'  }  }  
};  
</script>

事件总线(Event Bus)

使用事件总线(Event Bus):创建一个全局的Vue实例作为事件总线,在组件之间通过这个实例来触发和监听事件。

// event-bus.js  
import Vue from 'vue';  
export const EventBus = new Vue();  // 在组件A中  
import { EventBus } from './event-bus';  
EventBus.$emit('custom-event', 'data to share');  // 在组件B中  
import { EventBus } from './event-bus';  
EventBus.$on('custom-event', (data) => {  console.log(data); // 输出 'data to share'  
});

使用Vuex\Pinia状态管理库

Vuex是Vue的状态管理库,用于在多个组件之间共享状态。

  • 在Vuex中定义statemutationsactions等。
  • 在组件中使用this.$store来访问Vuex store,并通过mapStatemapMutationsmapActions等辅助函数来简化操作。

使用provide/inject

父组件使用provide选项提供数据,子组件通过inject选项来注入这些数据。

父组件:

export default {  provide() {  return {  sharedData: 'data to share'  };  }  
};

子组件中:

export default {  inject: ['sharedData'],  mounted() {  console.log(this.sharedData); // 输出 'data to share'  }  
};

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

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

相关文章

邮件群发系统怎么用呢?专业的邮件群发器?

邮件群发系统哪个比较好&#xff1f;邮件营销系统的效果怎么样&#xff1f; 在现代商业活动中&#xff0c;邮件群发系统已成为企业营销的重要工具。那么&#xff0c;邮件群发系统究竟如何使用呢&#xff1f;接下来&#xff0c;蜂邮EDM将为您详细解析邮件群发系统的使用方法。 …

股市反转数据分析

20240206是一个很好的股市反转数据分析的样本。因为之前的1月份2月前3个交易日也就是2月1日&#xff0c;2月2日和2月5日基本都是大跌。数据记录如下&#xff1a; 指数名称指数代码收盘价 [日期] 20231229 [单位] 元收盘价 [日期] 20240205 [单位] 元区间涨跌幅上证指数000001.…

深度学习图像分类相关概念简析+个人举例3(CNN相关补充,附详细举例代码1)

【1】激活函数&#xff08;Activation Function&#xff09;&#xff1a;在深度学习&#xff08;CNN&#xff09;中&#xff0c;激活函数用于引入非线性性质&#xff0c;帮助模型学习复杂的关系。常见的激活函数有ReLU、Sigmoid和Tanh等。 &#xff08;1&#xff09;ReLU激活函…

Godot 游戏引擎个人评价和2024年规划(无代码)

文章目录 前言Godot C# .net core 开发简单评价Godot相关网址可行性 Godot(GDScirpt) Vs CocosGodot VS UnityUnity 的裁员Unity的股票Unity的历史遗留问题&#xff1a;Mono和.net core.net core的开发者&#xff0c;微软 个人的独立游戏Steam平台分成说明独立游戏的选题美术风…

C# CAD交互界面-自定义面板集-添加快捷命令(五)

运行环境 vs2022 c# cad2016 调试成功 一、引用 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Windows; using System; using System.Drawing; using System.Windows.Forms; 二、代码说明 [CommandMethod("Cre…

Linux CentOS stream 9 alias

alias命令在Linux中用于创建命令别名。它允许用户为常用的命令或命令组合创建短而易记的别名,从而提高工作效率。 alias命令与windows中的快捷方式相同,执行别名时,终端解释器就进行查询与转换,进而执行原来的完整命令。 熟练使用alias命令可以使我们将一长串命令或者一些…

android下library打包aar并上传到maven,嵌入版的app

android嵌入版 准备工作简化代码到三方app上传maven自动打包上面已经完成了library到三方app的流程 这几天在研究android下怎么把自己的项目当作一个library给到另一个app做嵌入使用&#xff0c;把这些记录下来&#xff0c;方便以后参考 准备工作 1.需要了解一些gradle 命令打…

限制Unity帧率的方式

1&#xff09;限制Unity帧率的方式 2&#xff09;只在编辑器内&#xff0c;纹理不开启Read&Write情况下&#xff0c;如何获取纹理所有颜色值 3&#xff09;如何在FBX剔除Lit.shader依 4&#xff09;如何在iPhone 12mini设备上禁止竖屏 这是第373篇UWA技术知识分享的推送&am…

LInux页高速缓存和页写回

页缓存 页缓存是由内存中的物理页面组成的&#xff0c;其内容对应磁盘上的物理块。 页缓存大小能动态调整&#xff0c;可以占用空闲内存以扩大大小&#xff0c;也可以自我收缩缓解内存使用压力。 如果读一个磁盘内容&#xff0c;我们会读内存&#xff0c;如果存在&#xff0c;…

游戏开发-会飞的小鸟(已完结,附源码)

游戏开发-会飞的小鸟&#xff08;已完结&#xff0c;附源码&#xff09; 你将学到的课程链接详细介绍 你将学到的 掌握Java编程的基本技能开发出自己的“会飞的小鸟”游戏对面向对象编程有深刻的理解学会运用常见算法和数据结构解决问题能够独立调试和优化自己的代码 课程链接…

python二维数组初始化的一个极其隐蔽的bug(浅拷贝)

初始化一个三行三列的矩阵 m n 3初始化方式1 a [[0 for i in range(m)] for j in range(n)]初始化方式2 b [] row [0 for i in range(0,m)] for i in range(0,n):b.append(row)分别输出两个初始化的结果 for row in a:print(row) for row in b:print(row)当前的输出为…

用C语言实现单个网页图片爬虫

这段代码是一个使用C语言和libcurl库编写的程序,用于从指定的URL下载图片并保存到本地文件中。下面是该代码的详细介绍: 包含头文件: c #include <stdio.h> #include <curl/curl.h> 这两个头文件分别是标准I/O库和libcurl库的头文件。 定义回调函数: c …

标准库 STM32+EC11编码器+I2C ssd1306多级菜单例程

标准库 STM32EC11编码器I2C ssd1306多级菜单例程 &#x1f4cc;原创项目来源于&#xff1a;https://github.com/AdamLoong/Embedded_Menu_Simple&#x1f4cd;相关功能演示观看&#xff1a;https://space.bilibili.com/74495335 单片机多级菜单v1.2 &#x1f449;本次采用的是原…

springboot162基于SpringBoot的体育馆管理系统的设计与实现

体育馆管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕…

算法练习-二叉树的节点个数【完全/普通二叉树】(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;二叉树 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨…

广义表-C语言

广义表&#xff08;Generalized List&#xff09;是一种扩展了线性表的数据结构&#xff0c;它在线性表的基础上增加了元素可以是表的特点。在广义表中&#xff0c;元素不仅可以是单个的数据元素&#xff0c;还可以是一个子表&#xff0c;而子表中的元素也可以是数据元素或其他…

Java on VS Code 2024年1月更新|JDK 21支持!测试覆盖率功能最新体验!

作者&#xff1a;Nick Zhu - Senior Program Manager, Developer Division At Microsoft 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎来到 Visual Studio Code for Java 2024年的第一期更新&#xff01;提前祝愿大家春节快乐&#xff01;在本博客中&#xff0c;我们将有…

jvm一级缓存

1、利用JVM缓存。脱离redis。 2、导包&#xff0c;springboot自带此包。如没有可以导&#xff1a;com.google.guava:guava:20.0的包。 3、直接上代码&#xff1a; package com.leo.cache;import com.alibaba.fastjson.JSONObject; import com.google.common.cache.Cache; im…

开源软件:引领技术创新、商业模式与安全的融合

序 在信息技术日新月异的今天&#xff0c;开源软件以其独特的魅力和影响力&#xff0c;正逐渐成为软件产业的新常态。开源软件的低成本、高度可协作性和透明度等特点&#xff0c;不仅吸引了无数企业和个人用户的青睐&#xff0c;更为软件行业带来了前所未有的繁荣景象。 一、…

复旦微 zynq amp cpu0 唤醒启动cpu1

1 配置多核amp工程&#xff0c;参考上一篇文章 https://blog.csdn.net/yangchenglin927/article/details/136057534 2 在cpu0的main函数中增加唤醒代码 active_cpu1(); /** helloworld.c: simple test application** This application configures UART 16550 to baud rate 96…