VUE--组件通信(非父子)

一、非父子通信  ---  event bus 事件总线

        作用:非父子组件之间进行简易的消息传递

        步骤: 

                1、创建一个都能访问到的事件总线(空vue实例)--- utils/EventBus.js 

import Vue from 'vue'
export default new Vue({})

                2、 接收方(A组件),监听Bus实例的事件

<script>
import bus from '@/bus'
export default {
  created() {
    bus.$on('sendInfo', val => {
      console.log('接收的数据:' + val)
    })
  },
}
</script>

                3、 发送方(B组件),触发Bus实例的事件

<button @click="send">发送数据</button>

<script>
import bus from '@/bus' // @代表src文件夹
export default {
  methods: {
    send() {
      bus.$emit('sendInfo', '发送的数据')
    },
  },
}
</script>

                点击B组件的按钮后,控制台会输出对应内容。如下所示:

二、非父子通信  ---  provide & inject 

        作用:跨层次共享数据,但只能层层向下 

 

        步骤: 

                1、父组件provide提供数据

<template>
  <div>
    <Son></Son>
  </div>
</template>

<script>
import Son from './components/Son.vue'
export default {
  data() { return {} },
  provide: {
    // 传递给下层的数据
    user: { name: 'John', age: '18' },
  },
  components: { Son, },
}
</script>

                2、子/孙组件 inject取值使用 

<template>
  <div>
    <h2>儿子组件--{{ user.name }}</h2>
    <hr />
    <GrandSon></GrandSon>
  </div>
</template>

<script>
import GrandSon from './GrandSon.vue'
export default {
  name: 'SonPage',
  // inject取值
  inject: ['user'],
  components: { GrandSon, },
}
</script>
<template>
  <div>
    <h3>孙子组件 -- {{ user.age }}</h3>
  </div>
</template>

<script>
export default {
  inject: ['user'],
}
</script>

                结果如下:

注意:

        1、传递的数据如果是对象,则是响应式的

        2、传递其他格式的数据,则是非响应式的

        3、若要改为响应式的,可使用computed(不推荐!!!

import { computed } from 'vue'

provide: {
    // 传递给下层的数据
    user: { name: 'John', age: '18' },
    phone: computed('1212121')
},

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

test测试

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏&#xff1a;《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

静态分析工具的评估测试

原文链接&#xff1a;静态分析工具的评估测试-云社区-华为云 0. 前言 忙忙碌碌又一年&#xff0c;似乎始终都在工具的误报、漏报、能力对比三个问题之间打转转。说“反思”也好、“回溯”也好、“复盘”也好&#xff0c;也和同事、朋友、同行讨论过多次测试用例对这个三个问题…

新书速览|ASP.NET Core+Vue.js全栈开发训练营

使用ASP.NET 7与Vue.js 3构建功能丰富、高效的Web应用程序ASP.NET、Vue.js、全栈开发、Web应用开发 本书内容 《ASP.NET CoreVue.js全栈开发训练营》旨在为读者提供一个全面、实用的学习资源&#xff0c;以掌握使用ASP.NET Core 7和Vue.js 3构建功能丰富、高效的Web应用程序的技…

编程和数值计算平台:MATLAB R2023a(Win/Mac)激活版

MATLAB R2023a是一款强大的数值计算和科学编程软件&#xff0c;广泛应用于工程、科学和数学领域。 win版&#xff1a;https://soft.macxf.com/soft/3541.html?idMzE5MTM%3D mac版&#xff1a;https://www.macz.com/mac/9321.html?idOTI2NjQ5Jl8mMjcuMTg2LjkuOTg%3D 以下是MAT…

【Linux修行路】基本指令

目录 推荐 前言 1、重新认识操作系统 1.1 操作系统是什么? 1.2操作系统的作用 1.3 我们在计算机上的所有操作 1.4 Linux操作的特点 2、Linux基本指令 2.1 ls 指令 2.2 pwd 命令 2.3 cd 指令 2.3.1 Linux中的目录结构 2.3.2 绝对路径和相对路径 2.3.3 cd 指令 …

SpringCloud整合Zookeeper代替Eureka案例

文章目录 本期代码下载地址zookeeper简介zookeeper下载安装新建服务提供者测试 新建消费者测试 本期代码下载地址 地址:https://github.com/13thm/study_springcloud/tree/main/days4 zookeeper简介 zookeeper是一个分布式协调工具&#xff0c;可以实现注册中心功能 关闭Lin…

uniapp实现微信小程序富文本之mp-html插件详解

uniapp实现微信小程序富文本之mp-html插件 1 文章背景1.1 正则表达式1.2 mp-html插件1.3 uniapp 2 过程详解2.1 下载mp-html插件2.2 项目中引入mp-html2.3 引入正则规范图片自适应2.4 效果展示 3 全部代码 1 文章背景 1.1 正则表达式 正则表达式&#xff0c;又称规则表达式,&…

Java面相对象基础

目录 1、继承 2、定义类 3、规则 4、封装 5、private 6、this 就近原则 7、构造方法 8、标准的JavaBean 9、基本数据类型和引用数据类型 10、this的内存原理 11、成员和局部 1、继承 继承是java面向对象编程技术的一块基石&#xff0c;因为它允许创建分等级层次的类…

在gitlab中使用gitlab-sshd替换ssh服务

在gitlab15.9之后&#xff0c;gitlab-sshd成为了gitlab的服务组件之一&#xff0c;从而使得open-ssh不再是必需品&#xff0c;本篇主要讲配置。 配置&#xff08;gitlab.rb&#xff09; 启用gitlab-sshd gitlab_sshd[enable] true gitlab_sshd[listen_address] [::]:2222g…

算法题-爬楼梯-不同思路解法

主要记录个人思考过程&#xff0c;不同方案实现思路的演变 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;…

百度搜索Push个性化:新的突破

作者 | 通用搜索产品研发组 导读 本文简单介绍了百度搜索Push个性化的发展过程&#xff0c;揭示了面临的困境和挑战&#xff1a;如何筛选优质物料、如何对用户精准推荐等。我们实施了一系列策略方法进行突破&#xff0c;提出核心的解决思路和切实可行的落地方案。提升了搜索DAU…

司铭宇老师:房产销售培训机构/培训公司:如何让房地产培训课程更加有效和落地?

房产销售培训机构/培训公司&#xff1a;如何让房地产培训课程更加有效和落地&#xff1f; 房产销售培训是当前房地产行业中不可或缺的一环。随着市场竞争的加剧&#xff0c;房地产企业对于销售团队的培训需求也越来越迫切。然而&#xff0c;传统的房产销售培训效果并不理想&am…

触摸按键控制LED灯

目录 1.理论 2.代码 2.1 touch_ctrl_led.v 2.2 tb_touch_ctrl_led 1.理论 以上的波形图的touch_flag是采用组合逻辑的方式产生的。 以上的touch_flag是采用时序逻辑产生的&#xff0c;时序逻辑会延迟一拍。 以上是上升沿和下降沿的组合逻辑和时序逻辑实现&#xff0c;逻辑或…

Java的便捷输入方法及解析

在 Java 中&#xff0c;有多种便捷的输入方法可以从用户那里获取输入。下面是一些常见的便捷输入方法及解析&#xff1a; 使用 Scanner 类&#xff1a;在上述示例中&#xff0c;首先导入了 java.util.Scanner 类&#xff0c;创建了一个 Scanner 对象&#xff0c;并使用 System…

<软考高项备考>《论文专题 - 76 风险管理(8)》

8 收尾经验和不足 8.1 经验&#xff1a; 一&#xff1a;事前、事中、事后 1、事前预防&#xff0c;风险不可避免&#xff0c;但是可以预估&#xff0c;提前对可能出现的风险进行规避&#xff0c;可有效减轻或避免风险带来的损失; 2、事中控制&#xff0c;当预判到风险时&…

SpringBoot SaToken Filter如用使用ControllerAdvice统一异常拦截

其实所有的Filter都是一样的原理 大致流程: 创建一个自定义Filter, 用于拦截所有异常此Filter正常进行后续Filter调用当调用后续Filter时, 如果发生异常, 则委托给HandlerExceptionResolver进行后续处理即可 以sa-token的SaServletFilter为例 首先注册SaToken的过滤器 pac…

文件夹里的文件消失了?3个方法轻松找回文件!

“我在电脑上建了个文件夹&#xff0c;用来保存比较重要的文件和数据&#xff0c;但是不知道为什么&#xff0c;我文件夹里的文件莫名其妙就消失了&#xff0c;有什么方法可以找回消失的文件吗&#xff1f;” 为了更好的给文件进行分类&#xff0c;很多用户会选择将文件放置到不…

线性代数基础【5】特征值和特征向量

第五章 特征值和特征向量 第一节、特征值和特征向量的基本概念 一、特征值和特征向量的理论背景 在一个多项式中,未知数的个数为任意多个,且每一项次数都是2的多项式称为二次型,二次型分为两种类型:即非标准二次型及标准二次型 注意: ①二次型X^T AX为非标准二次型的充分必…

WEB 3D技术 three.js 3D贺卡(3) 点光源灯光动画效果

经过 上文 WEB 3D技术 three.js 3D贺卡(2) 加入天空与水面效果 我们将水面 和 天空的效果搭建了一下 那么 我们将四周 点光源的效果做一下 首先 我们将 renderer.toneMappingExposure 的值 改为 0.1 让效果看着明显一点 这样 整个界面就会暗下来 然后 我们在任意位置 加入代…

关于CCF GESP第五次认证开启报名的通知

CCF GESP第五次认证时间为2024年3月16日&#xff0c;1-4级认证时间为上午9:30-11:30&#xff0c;5-8级认证时间为下午13:30-16:30。1月18日17:00开启3月认证报名通道&#xff0c;考生可自行登录GESP官方网站进行报名。GESP认证方式为全国各GESP考点上机考试&#xff0c;认证语言…