首页 > 其他分享 >Vue组件间通讯方式

Vue组件间通讯方式

时间:2023-02-07 22:45:51浏览次数:34  
标签:Vue bus mitt 总线 通讯 事件 组件 mitter

总结Vue组件间通讯方式

  父子组件通讯

    父向子

      一般为props:在父组件内,子组件标签上写明传递参数的名字和值,在子组件内部用props声明,即可使用

//子组件标签 
<Pagination :abc=abc  def="123"/>
//子组件内部
props:['abc,'def'],
setup(props){

}

    子向父 

       一般为自定义事件方法:在父组件内,子组件标签上写明事件名称,在子组件内部触发,回调在父组件。

父组件内,子组件标签上,
  <Pagination  @goPages="goPages" />
子组件内触发
  $emit('goPages',canshu)  
父组件内的回调
  goPages(){
    XXX  
  } 

  任意组件通信

      一般用全局事件总线,vue2中的$bus,vue3的mitter。

        vue2中的全局事件总线

1. 安装全局事件总线:
   new Vue({
   	......
   	beforeCreate() {
   		Vue.prototype.$bus = this //安装全局事件总线,$bus就是当前应用的vm
   	},
       ......
   }) 
2. 使用事件总线:
   1. 接收数据:A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件自身。
      methods(){
        demo(data){......}
      }
      ......
      mounted() {
        this.$bus.$on('xxxx',this.demo)
      }
   2. 提供数据:this.$bus.$emit('xxxx',数据)

3. 最好在beforeDestroy钩子中,用$off去解绑当前组件所用到的事件。

      在vue3里,全局事件总线被取消了,要是想使用,利用插件 mitt

1. npm i mitt
2. src/mitt/index.js
   // 固定格式
   import mitt from 'mitt';
   const mitter = mitt()
   export default  mitter

3. 相互通信的两个组件中引入
   import mitter  from "@/mitt";
4. 发送数据组件--事件触发
   mitter.emit('toQuery',myQuery)
5. 接受数据组件--事件监听
   mitter.on('toQuery',(q)=>{
   	myQuery =  q
   	//myQuery已经声明,toQuery为事件名称,q为传递的参数
   })
6. 解绑
   emitter.all.clear()
   emitter.off('toQuery')

     组件间通讯还可以用消息的订阅与发布,我不太想用,也得用插件

 

标签:Vue,bus,mitt,总线,通讯,事件,组件,mitter
From: https://www.cnblogs.com/bjpfee/p/17100055.html

相关文章

  • drf认证组件/权限/频率 排序组件 分页组件
    Drf认证组件eg:个别接口需要登录后才可以使用局部使用#需要编写一个认证类#在py文件中创建一个认证类的py文件authentication.py通过继承来编写:eg:登录验证from......
  • DRF - 过滤与排序、分页组件
    目录过滤与排序1.drf内置过滤类【继承GenericAPIView】导入内置过滤器-SearchFilterviews.py-搜索方式2.第三方过滤器导入模块这里用到了第三方模块django-filtersviews......
  • drf权限组件 频率组件 过滤排序 分页
    1认证组件#以后,有的接口需要登录才能访问,有的接口,不等了就能访问 -登录认证的限制#写一个登录接口,返回token,以后只要带着token过来,就是登陆了,不带就是没有登录#......
  • drf之三大认证、过滤、排序、分页组件
    drf之三大认证、过滤、排序、分页组件本文所介绍的组件,都有着很相似的配置方式,继承组件类,类体中配置参数,视图类中配置参数添加对应的组件类或者全局配置,我们就可以方便的......
  • vue高级进阶( 一 ) 组件精髓概述
    前言这个系列可能会分为几部分:基础以及高级用法总结一些比较有代表性的实战源码解析(一定是用最粗俗,不对,是最通俗的语言讲解,这个我可以保证)总之一定对得起高级......
  • vue高级进阶( 二 ) 8种组件通信详解
     vue高级进阶(二)8种组件通信详解猛兽总是独行,牛羊才成群结队。-------鲁迅vue组件通信的重要性无需多言。。。但是你肯定没有全部掌握,所以这第二篇文章应运而......
  • vue高级进阶( 三 ) 组件高级用法及最佳实践
     vue高级进阶(三)组件高级用法及最佳实践世界上有太多孤独的人害怕先踏出第一步。---绿皮书书接上回,上篇介绍了vue组件通信比较有代表性的几种方法,本篇主要讲......
  • 认证组件、权限组件、频率组件、过滤排序、分页
    认证组件、权限组件、频率组件、过滤排序、分页认证组件1.认证组件###视图fromrest_framework.genericsimportListAPIView,RetrieveAPIViewfromrest_framework.m......
  • python之路65 drf从入门到成神 5 认证组件、权限组件、频率组件、过滤排序、分页
    认证组件以后,有的接口需要登录后才能访问,有的接口,不登录就能访问写一个登录接口,返回token,以后只要带着token过来,就是登录了不带就没有登录需求:查询所有不需要登录......
  • vue3 | readonly、shallowReadonly
    readonly接受一个对象(不管是响应式还是普通的)或者是一个ref,返回的是一个原值的只读代理。<template><n-elclass="h-400w-fullflexflex-coljustify-centeritems......