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文档中几个易忽视部分的剖析

    详解Vue文档中几个易忽视部分的剖析

    针对Vue文档中部分大家可能不会去研读的内容,这篇文章主要介绍了详解Vue文档中几个易忽视部分的剖析,非常具有实用价值,需要的朋友可以参考下
    2018-03-03
  • Vux+Axios拦截器增加loading的问题及实现方法

    Vux+Axios拦截器增加loading的问题及实现方法

    这篇文章主要介绍了Vux+Axios拦截器增加loading的问题及实现方法,文中通过实例代码介绍了vue中使用axios的相关知识,需要的朋友可以参考下
    2018-11-11
  • Vite的createServer启动源码解析

    Vite的createServer启动源码解析

    这篇文章主要为大家介绍了Vite的createServer启动源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • element-plus中el-upload组件限制上传文件类型的方法

    element-plus中el-upload组件限制上传文件类型的方法

     Element Plus 中,el-upload 组件可以通过设置 accept 属性来限制上传文件的格式,这篇文章主要介绍了element-plus中el-upload组件限制上传文件类型,需要的朋友可以参考下
    2024-02-02
  • vue实现数字变换动画的示例代码

    vue实现数字变换动画的示例代码

    本文主要介绍了vue实现数字变换动画的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • vue实现input框禁止输入标签

    vue实现input框禁止输入标签

    这篇文章主要介绍了vue实现input框禁止输入标签,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue 处理跨域问题及解决方法小结

    vue 处理跨域问题及解决方法小结

    跨域问题的出现是因为浏览器的同源策略问题,如果没有同源策略我们的浏览器将会十分的不安全,随时都可能受到攻击,今天小编通过本文给大家介绍下vue 处理跨域问题,感兴趣的朋友一起看看吧
    2021-09-09
  • Vue3中使用styled-components的实现

    Vue3中使用styled-components的实现

    本文主要介绍了Vue3中使用styled-components的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • Vue中bus的使用详解

    Vue中bus的使用详解

    这篇文章主要介绍了Vue中bus的使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • vue element修改el-select控件长度style=“width:XXpx“不生效的解决

    vue element修改el-select控件长度style=“width:XXpx“不生效的解决

    这篇文章主要介绍了vue element修改el-select控件长度style=“width:XXpx“不生效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论