Vue3.js调用父组件的实现方式

 更新时间:2025年10月10日 08:42:01   作者:丨404 NotFound  
这篇文章主要介绍了Vue3.js调用父组件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Vue3.js调用父组件

Vue2的时候一直使用this.$emit('方法名','参数')的方式, 调用父组件的方法. 是没有问题的.

Vue3的时候, 假如我们父组件的方法放在setup()函数中, 子组件是无法获取通过this.$emit()调用父组件的方法.

举例代码如下

  • 父组件 Father.vue
<template>
  <Child
    @eventFuction="eventFuction"
  >
  </Child>
</template>

<script>
import { defineComponent } from 'vue'
import Child from "./Child.vue";
export default defineComponent({
  name: "Father",
  components: {
    Child,
  },
  setup() {
    // 父组件声明的方法
    const eventFuction = (param) =>{
      console.log(param, '接收子组件传值');
    }
    return {
      eventFuction,
    }
  }
})
</script>

<style scoped>
</style>
  • 子组件 Child.vue
<template>
  <a-button @click="onClick">调用父组件方法传参</a-button>
</template>

<script>
import { defineComponent } from 'vue'
export default defineComponent({
  name: "Child",
  setup() {
    const onClick = ()=> {
      // 这样是会报错的 
      this.$emit('eventFuction ', '10')
    }
    return{
      onClick,
    }
  }
})
</script>

<style scoped>

</style>

原因分析

在vue3中setup是在声明周期beforeCreate和created前执行, 这时候vue对象还没有创建, 所以我们无法使用this

解决办法

子组件的setup()函数中有个context的参数,这个参数中包含了emit的方法。

配合这个我们可以调用父组件的方法。

  • 子组件修改后代码如下:
<template>
  <a-button @click="onClick">调用父组件方法传参</a-button>
</template>

<script>
import { defineComponent } from 'vue'
export default defineComponent({
  name: "Child",
  setup(props, context) {
    const onClick = ()=> {
      // 这样写就没问题了
      context.emit('eventFuction ', '10')
    }
    return{
      onClick,
    }
  }
})
</script>

<style scoped>

</style>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue生成gzip压缩包部署到nginx的示例

    vue生成gzip压缩包部署到nginx的示例

    vue 生成gzip压缩包部署到nginx服务器,如果我们把web网站资源进行gzip压缩后进行传输给浏览器,这样就能加快网站资源的加载速度,这篇文章主要介绍了vue生成gzip压缩包部署到nginx,需要的朋友可以参考下
    2022-12-12
  • Vue3中如何检测数组的变化方式

    Vue3中如何检测数组的变化方式

    这篇文章主要介绍了Vue3中如何检测数组的变化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Vue3实现pdf预览功能

    Vue3实现pdf预览功能

    在开发中,PDF预览和交互功能是一个常见的需求,无论是管理系统、在线教育平台,还是企业内部的知识库,能够高效地展示和操作PDF文件都能极大地提升用户体验,本文将详细介绍如何在Vue项目中实现pdf预览功能,需要的朋友可以参考下
    2025-03-03
  • vue中v-for指令完成列表渲染

    vue中v-for指令完成列表渲染

    这篇文章主要给大家分享的是vue中v-for指令完成列表渲染,下面文化章就围绕中v-for的相关资料在Vue中列表渲染做个简单总结和使用演示,需要的朋友可以参考一下,希望对大家有所帮助
    2021-11-11
  • vue中如何更改element-ui主题色

    vue中如何更改element-ui主题色

    这篇文章主要介绍了vue中如何更改element-ui主题色,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 如何解决.vue文件url引用文件的问题

    如何解决.vue文件url引用文件的问题

    这篇文章主要介绍了解决.vue文件url引用文件的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Vue中使用 Echarts5.0 遇到的一些问题(vue-cli 下开发)

    Vue中使用 Echarts5.0 遇到的一些问题(vue-cli 下开发)

    这篇文章主要介绍了Vue中使用 Echarts5.0 遇到的一些问题(vue-cli 下开发),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Vue登录拦截 登录后继续跳转指定页面的操作

    Vue登录拦截 登录后继续跳转指定页面的操作

    这篇文章主要介绍了Vue登录拦截 登录后继续跳转指定页面的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 利用Vue与D3.js创建交互式数据可视化

    利用Vue与D3.js创建交互式数据可视化

    在现代Web开发中,数据可视化是一个引人瞩目的热点领域,从简单的图表到复杂的交互式仪表盘,数据可视化能够帮助用户更好地理解数据,而Vue与D3.js的结合则为我们提供了构建这些可视化效果的强大工具,本文将向您展示如何利用Vue与D3.js创建一个基本的交互式数据可视化项目
    2025-02-02
  • openlayers6之地图覆盖物overlay三种常用用法(popup弹窗marker标注text文本)

    openlayers6之地图覆盖物overlay三种常用用法(popup弹窗marker标注text文本)

    这篇文章主要介绍了openlayers6之地图覆盖物overlay三种常用用法(popup弹窗marker标注text文本),主要讲overlay三种最常用的案例,感兴趣的朋友一起看看吧
    2021-09-09

最新评论