美文网首页奇思妙想Vue
Vue组件间的传参½

Vue组件间的传参½

作者: 小小Bug你别跑 | 来源:发表于2022-04-26 10:04 被阅读0次

一、props与$emit 组件间的通信 、原则上可以实现所有组件见的参数传递
父 => 子

//父组件
<children :toChildren='toChildren' :toChildren1="toChildren1" />
//子组件
props:{
   toChildren: {
      type: Number || String || Array || object, 
       //可传递参数类型,最好明确类型。也可以type: [Number, String, Array ,Object]。
      default: () => {
        return 0  ||  ''  ||  []  ||  {}    //为了严谨,父组件没传递参数时给到的默认值。
      }
    },
  toChildren1:{} //同上
},

子 => 父

//父组件
<children @childByValue='childByValue'/>

methods:{
    childByValue(val){
      this.toChild = val 
      //可以绑定父组件传递给其他兄弟组件的参数,并实现兄弟组件传参
    }
}
//子组件
 <input type="button" @click="childButtom" value="传值到父组件">

  methods:{
       childButtom(){
           this.$emit('childByValue',this.childValue)
       }
  }

二、事件总线EventBus

EventBus简介
EventBus 又称为事件总线,在Vue中可以使用 EventBus来作为沟通桥梁的概念,就像是所有组件共用相同的事件中心,可以向该中心注册发送事件或接收事件, 所以㢟都可以上下平行地通知其他组件,但也就是太方便了,所以使用不慎,就会造成难以维护的“灾难””,因此才需要Vuex作为状态管理中心,将通知的概念上升到共享状态层次

前言:eventBus可以说让人又爱又恨,正如简介中介绍的初始用的人无不大呼一声真香,它的语法的的简单直接,效果明显,无不让用它的人逐步上瘾,随之就会迎来eventBus的当头一棒,好像在说,小子你还年轻。(话不多说直接上代码)

//main.js 全局引用
Vue.prototype.$EventBus = new Vue()
//或者
import Vue from 'vue'
const EventBus = new Vue()  
//两种皆可本文使用第一种引用方式
//绑定传递
<template>
  <div>
     <button @click="checkName()">EventBus传参</button>
  </div>
</template>
<script>
export default {
  data(){
    return{ 
    }
  },
  mounted(){},
  methods:{
    checkName(){
      this.$EventBus.$emit('eventName', ' - 父组件的EventBus')
    },
  }
}
</script>
//监听
<template>
  <div>
     <p>{{childrenName}}</p>
  </div>
</template>
<script>
export default {
 data(){
    return{ 
        childrenName:''
    }
 },
 mounted(){
    //添加监听事件'eventName'
     this.$EventBus.$on('eventName',(children)=>{
         this.childrenName = children
     })
 },
 beforeDestroy(){
    //移除监听事件'eventName'
      this.$EventBus.$off("eventName")
  }
}
</script>

重点!重点!重点!
A组件只向EventBus发送了一次事件,但B组件却进行了多次监听,EventBus容器中有很多个一模一样的事件监听器这时就会出现,事件只触发一次,但监听事件中的回调函数执行了很多次

beforeDestroy(){
    //移除监听事件"eventName"
      this.$EventBus.$off("eventName")
  }

总之,AB组件如果层级过深,或者毫无关联,需要点对点传参数,那么就用它!用它!用它!肯定爽到你''深田里敲钉桩''。

相关文章

  • SSM单体架构项目 (下)

    Vue 组件 组件导入 组件传参 props 组件传参,父组件向子组件传参 分页 引入分页组件

  • Vue组件间的传参½

    一、props与$emit 组件间的通信 、原则上可以实现所有组件见的参数传递父 => 子 子 => 父 二、事...

  • Vue组件间数据传递

    前言 总结vue组件间的数据传递 路由传参 父组件传递数据给子组件---props 子组件传递数据给父组件---$...

  • vue组件之间通信

    vue父组件给子组件传参使用props子组件给父组件传参使用时间派发$dispatch兄弟组件之间传递参数使用vuex

  • vue 组件间各种姿势的传参,不看白不看!!!

    前言 vue的组件间传参的方式很多,今天就来总结下,基本就在这里!! Vue 组件间通信是面试常考的知识点之一,这...

  • 06.父子组件 (VUE全栈开发学习笔记)

    以下,节选自08.Vue传值方式 3.父子组件传参 使用场景:父子组件间 3.1. 父传子 子组件定义属性: 父组...

  • vue组件传参问题

    在vue项目中会经常遇到组件传参问题,今天就来了解一下父子组件和兄弟组件传参 父组件传值给子组件 *父组件通过 ...

  • vue组件通信

    vue的组件传参的方式父子组件传参1.prop和emit是子传父,子组件监听一个事件,父组件调用并接受子组件传递过...

  • vue第七节

    Vue里组件的通信 通信:传参、控制(A操控B做一个事件)、数据共享 模式:父子组件间、非父子组件 父组件可以将一...

  • 02.1 - vue 组件间传参 props

    一、用法 父组件、子组件概念: 二、父组件传参给子组件 - props 1、传静态数据 1、父组件传参 2、子组...

网友评论

    本文标题:Vue组件间的传参½

    本文链接:https://www.haomeiwen.com/subject/smbwcrtx.html