vue组件通信简明笔记:子传父

之前做了一篇父传子的笔记,需要的小伙伴可以去看看:
vue组件通信简明笔记:父传子
今天的笔记是,子传父通信。

1、 子传父:自定义事件($emit)

  • 在Vue中,子组件向父组件传递数据可以通过自定义事件来实现。
    示例:
<!-- 父组件 -->
<template>
  <div>
    <h1>{{ message }}</h1>
    <child-component @childEvent="handleChildEvent"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      message: ''
    };
  },
  methods: {
    handleChildEvent(data) {
      this.message = data;
    }
  }
};
</script>  
<!-- 子组件 ChildComponent.vue -->
<template>
  <div>
    <button @click="sendDataToParent">向父组件传递数据</button>
  </div>
</template>

<script>
export default {
  methods: {
    sendDataToParent() {
      const data = 'Hello, Parent!';
      this.$emit('childEvent', data);
    }
  }
};
</script> 
  • 父组件通过@childEvent="handleChildEvent"监听子组件触发的childEvent事件。当子组件调用this.$emit('childEvent', data)时,会将data作为参数传递给父组件的handleChildEvent方法。
  • 父组件可以在handleChildEvent方法中接收数据并进行相应处理。在这个例子中,父组件将接收到的数据赋值给message,然后在模板中显示出来。
  • 当在子组件中点击按钮时,就会向父组件传递数据,并在父组件中更新相应的状态。

2、子传父:$refs

父组件可以通过ref属性引用子组件,直接访问子组件的属性和方法。这样可以实现子组件向父组件传递数据。

<!-- 父组件 -->
<template>
  <div>
    <h1>{{ message }}</h1>
    <!-- 给子组件定义一个 ref 属性-->
    <child-component ref="childRef"></child-component>
    <button @click="getChildData">获取子组件数据</button>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      message: ''
    };
  },
  methods: {
    getChildData() {
    //拿到
      const childData = this.$refs.childRef.data;
      this.message = childData;
    }
  }
};
</script> 
<!-- 子组件 ChildComponent.vue -->
<template>
  <div>
    <!-- 子组件的数据 -->
    <p>{{ data }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      data: 'Hello, Parent!'
    };
  }
};
</script> 
  • 父组件通过给子组件添加ref="属性名"属性来引用子组件。然后,在父组件的方法中,可以通过this.$refs.属性名访问子组件的属性和方法。
  • 在这个例子中,父组件通过this.$refs.属性名.data获取子组件的data属性,并将其赋值给message,然后在模板中显示出来。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

藏蓝色攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值