Vue组件常用的六种通信方式

2023-11-01

Vue.js 组件实例的作用域是相互独立的,不同组件之间的数据不能互相访问,组件有父级组件、子级组件、兄弟组件,如何选择组件之间的通信方式?针对常用的 props、$emit/$on、vuex、$parent/$children、$attrs/$listeners、provide/inject 进行讲解,对比各自的区别以及使用场景。

1. props

子组件使用props 接收父组件传递的值,子组件通过 $emit ,让父组件接收事件,改变父组件的data里面的值;

代码示例:

  1. <!--父组件-->
    <template>
        <title :title='title' @change='changeHandle'></title>
    </template>
    <script>
    export default {
        data() {
            return {
                title: '123'
            };
        },
        components: {
            title
        },
        methods: {
            changeHandle(val) {
                this.title = val;
            }
        }
    }
    </script>
    
    <!--子组件-->
    <template>
        <div @click='changeHandle'>{
        {title}}</div>
    </template>
    <script>
    export default {
        props: {
            title: String
        },
        methods: {
            changeHandle() {
                this.$emit('change', '456');
            }
        }
    }
    </script>

     

子组件通过事件向父组件传递值,父组件更改自己的数据,子组件接收更改后的值;

2. $emit/$on

通过Vue 的实例触发事件和监听事件,实现了跨级组件的通信;

代码示例:

  1. <!--在Vue的原型链上添加$bus 属性,赋值为Vue实例-->
    const EventBus = new Vue();
    Object.defineProperties(Vue.prototype, {
        $bus: {
            get() {
                return EventBus;
            }
        }
    });
    window.globalVue = EventBus;
    
    <!--使用-->
    // 组件A
    <template>
        <div @click='changeHandle'>触发事件</div>
    </template>
    <script>
    export default {
        methods: {
            changeHandle() {
                window.globalVue.$emit('change', '456');
            }
        }
    }
    </script>
    
    // 组件 B
    <template>
        <div>监听事件</div>
    </template>
    <script>
    export default 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue组件常用的六种通信方式 的相关文章

随机推荐

  • Scheme 介绍

    最近一直在看 sicp 这本书 准备写点读书笔记 这篇当作是对 Scheme 语言的介绍 毕竟全书是用这门语言写的 下面是我对书中使用的 mit scheme 的一些理解 我没有正统学习过函数式或类 Lisp 语言 只有一些我自己在做这本书
  • Vision Transformer综述 总篇

    Vision Transformer综述 1 Transformer简介 2 Transformer组成 2 1 Self Attention Multi Head Attention 多头注意力 2 2 Transformer的其他关键概
  • Python时间序列统计模型自回归预测网络流量

    预测过程包括预测时间序列的未来值 或者通过仅基于其过去行为 自回归 对序列进行建模 或者通过使用其他外部变量来进行建模 本文档描述了如何使用机器学习和统计模型来预测访问网站的流量 使用自 2020 年 7 月 1 日起 查看网站的每日访问历
  • 五子棋AI算法简易实现(一)

    基础篇 1 胜负判定 五子棋的胜负判定的条件是其中一方下棋以后 横线 竖线 右上斜线或者右下斜线任一方向出现五子相连 即可判定获胜 此处用递归方法即可实现 var is win false var ModuleWinnerCheck che
  • 单链表的插入操作(全)

    1 在指定位序插入数据第一步 主要执行操作 查找 先查找所要插入位置的前一个元素 具体方法 根据链表的特点 每一个节点都需要一个数据域和指针域 所以只需从头节点遍历到所要插入数据的的前一个节点即可 后面的showList函数也用的这种方法第
  • SqlServer2019—解决SQL Server 无法连接127.0.0.1的问题

    1 打开SQL Server 2019配置管理器 2 SQL Servere 网络配置 启用 Named Pipes 和 TCP IP 3 修改TCP IP协议 右键选择属性 IP地址 具体如下图所示 4 重启SQL Server服务
  • C语言输出菱形

    C语言输出菱形 菱形 include
  • 栈的顺序表示

    栈底是表头 栈顶是表尾 只能在表尾插入和删除 栈的第一个元素放在下标为0的位置 虽然top指向栈顶元素 但为了方便 指向栈顶元素之上 即下一个元素的位置 stacksize栈的大小 用来表示我们当前分配的数组 我们用数组来存储栈 能存储多少
  • 聊聊什么是架构,你理解对了吗?

    什么是架构 软件有架构 建筑也有架构 它们有什么相同点和不同点 下面咱们就介绍一下 容易混淆的几个概念 一 系统与子系统 系统 泛指由一群有关联的个体组成 根据某种规则运作 能完成个别元件不能单独完成的工作的群体 它的意思是 总体 整体 或
  • C++中的单例模式

    单例模式也称为单件模式 单子模式 可能是使用最广泛的设计模式 其意图是保证一个类仅有一个实例 并提供一个访问它的全局访问点 该实例被所有程序模块共享 有很多地方需要这样的功能模块 如系统的日志输出 GUI应用必须是单鼠标 MODEM的联接需
  • 转载 ---kafka集群消费之ConsumerRecord类

    java lang Object继承 org apache kafka clients consumer ConsumerRecord
  • 次表面散射

    技术博客 https github com Li ZhuoHang Subsurface scattering 基于屏幕空间模糊的次表面散射 SSSSS 效果展示 原模型 开启镜面表面反射 float PHBeckmann float nd
  • Qt中定义全局变量方法

    在使用qt编程时经常要使用到全局变量 全局变量该如何去定义和初始化呢 有两种方式 第一种使用extern 关键字 global h extern int a global cpp static int a 1 myfile cpp incl
  • ..\OBJ\Template.axf: Error: L6218E: Undefined symbol FSMC_NORSRAMCmd (referred from lcd.o).

    面对这个问题 假如环境配置和一般代码上不出错出现的问题的话 那就是缺了下面这两个文件 剩下的我就继续一步一步操作 进行 下去 步骤1 步骤2 用直接右击FWLIB 中第三个选项Add Existing Files 步骤3 在FWLIB中找s
  • Web服务器群集:使用Haproxy搭建Web集群

    目录 一 理论 1 Haproxy集群 2 常见的web集群调度器 3 三种web集群调度器的区别 4 下载安装 二 部署Haproxy集群 1 部署 2 重新定义Haproxy集群的日志 三 实验 1 部署Haproxy集群 四 问题 1
  • 新手linux安装vasp_史上最简单的VASP安装教程-非虚拟机

    本文是针对vasp初学者的安装教程编译器以及VASP都已编译号直接解压到系统中即可用 故不用配置其它的库文件以及环境 本教程适用于任意平台安装centos7的服务器以及pc机 若在其它linux发行版本中安装请咨询小编 一 VASP安装需要
  • SecureCRT 5.0菜单栏消失

    今天遇到一个怪问题 SecureCRT的菜单栏突然没了 郁闷了很长时间 回头想想好像是在最小化的时候选了个什么 顺着这个思路 终于发现最小化窗口 在任务栏上的最小化的程序上点右键 呵呵 看到了 Always On Top Save Sett
  • Keil IAR - Cortex M3 调试问题及解决方法(1)

    看到一篇文章 转载如下 其实不光是STM32 其它芯片甚至其它的IDE 都可参考 STM32调试过程中常见的问题及解决方法 一 在 Debug选项卡 下设置好仿真器的类型后 下载程序时却提示 No ULINK Device found 解决
  • 你不知道的javascript之运算符

    学过c php这些语言的同学在学习javascript时候可能会有一些困扰 因为javascript中的 和c或者是php中有很大的差别 因为在javascript中返回的类型并不是布尔值 他返回的而是两个操作值中之一 例如一下例子 var
  • Vue组件常用的六种通信方式

    Vue js 组件实例的作用域是相互独立的 不同组件之间的数据不能互相访问 组件有父级组件 子级组件 兄弟组件 如何选择组件之间的通信方式 针对常用的 props emit on vuex parent children attrs lis