vue父子兄传值理解

父传子

总结:引入、注册、调用、传值,子组件props接收

  1. 引入子组件
 import son from "./son.vue";
  1. components中注册子组件
components: {
    son,
  }
  1. 使用子组件并且将数据传递给子组件
 <son :myname="mySonName"></son>
  1. 子组件接收数据,接收方法2种
props:['myname']
props: {
    myname: {
      type: String,
      required: true,
    },
  },

子传父

总结:子组件通过事件操作 使用$emit传递数据
5. 子组件定义绑定按钮,绑定点击事件

<button @click="tellFather">点我传给父组件</button>
  1. 子组件使用this.$emit(‘自定义事件类型’,需要传递的数据) 将数据传给父组件
tellFather() {
      this.$emit("tellToFather", this.mygfName);
    },
  1. 父组件监听事件,接收数据
    注意:监听的方法必须和子组件的命名相同
  <son @tellToFather="handler"></son>

兄弟传值

总结:兄弟之间无法直接传值,可以通事件总线方法传递 (以下方法就是事件总线)

  1. 需将所有兄弟组件嵌套入父组件处,操作走第一大步(引入,注册,调用)
  2. 创建公共vue实例,并引入(由于this指向问题,需要创建一个公共vue实例来实现事件发出的监听问题) 创建一个js文件放下面的代码 在两个子组件中都要引入这个文件 常规命名为:eventBus.js 引入的时候命名为bus,所以下面使用的是bus.$on
	import Vue from "vue";
	export default new Vue();
  1. son组件创建按钮绑定点击事件,将数据传递出去
<button @click="tellBorder">点我传给border</button>

  methods: {
    tellBorder() {
      bus.$emit("tellToborder", this.mygfName);
    },
  },
  1. border组件中在mounted中进行监听事件(因为不知道事件什么时候触发,所以需要界面渲染就开始监听,使用bus.$on)
 mounted() {
    bus.$on("tellToborder", (data) => {
      this.sonGFname = data;
    });
  },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值