Vue子组件调用父组件事件的3种方法实例

 更新时间:2024年01月11日 11:43:09   作者:嗯哼姐  
大家在做vue开发过程中经常遇到父组件需要调用子组件方法或者子组件需要调用父组件的方法的情况,这篇文章主要给大家介绍了关于Vue子组件调用父组件事件的3种方法,需要的朋友可以参考下

1. 在子组件中通过this.$parent.event来调用父组件的方法,data参数可选

<template>
  <div>
    <h1>我是父组件</h1>
    <child />
  </div>
</template>
<script>
  import child from '@/components/child';
  export default {
    components: {
      child
    },
    methods: {
      fatherMethod(data) {
        console.log('我是父组件方法');
      }
    }
  };
</script>
<template>
  <div>
    <h1>我是子组件</h1>
    <button @click="childMethod(data)">点击</button>
  </div>
</template>
<script>
  export default {
    methods: {
      childMethod() {
        this.$parent.fatherMethod(data);
        console.log('调用父组件方法')
      }
    }
  };
</script>

2.父组件使用v-bind绑定一个变量(v-bind:变量名="值"),子组件用props接收(与created同级)

<template>
  <div>
    这是父组件
    <child :parentHandler="parentHandler" />
  </div>
</template>
<script>
import child from "@/components/child";
export default {
  components: { child },
  data() {
    return {};
  },
  methods: {
    parentHandler() {
      console.log("这是父组件的方法");
    },
  },
};
</script>
<template>
  <div>
    这是子组件
    <button @click="handler">这是子组件的按钮</button>
  </div>
</template>
<script>
export default {
  props: {
    parentHandler: {
      type: Function,
      default: () => {
        return Function;
      },
    },
    //parentHandler: {
    //   type: Object,
    //   default: () => {
    //     return {}
    //   },
    //},
    // parentHandler: {
    //   type: Boolean,
    //   default: true,
    // },
    // parentHandler: {
    //   type: Array,
    //   default: () => {
    //     return []
    //   },
    // },
    // parentHandler: {
    //   type: String,
    //   default: '',
    // },
  },
  methods: {
    handler() {
      this.parentHandler();
    },
  },
};
</script>

3.使用$refs传值

<template>
  <div>
    <h3>这是父组件</h3>
    <button @click="setChildInfo">向子组件传值</button>
    <h3>这是父组件中引用的子组件</h3>
    <child ref="child"></child>
  </div>
</template>

<script>
//子组件地址(仅供参考),具体以实际项目目录地址为准
import child from "./Child.vue";
export default {
  components: {
    child: child
  },
  data() {
    return {};
  },
  methods: {
    // 向子组件传值
    setChildInfo() {
      this.$refs.child.cInfo = "c2";
      //this.$refs.child.open("c2");
    }
  }
};
</script>
<template>
  <div>
    <p>收到父组件数据:{{ cInfo }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      cInfo: "c1"
    };
  },
  methods: {
    //open(data) {
    //  console.log(data);
    //},
  },
};
</script>

总结 

到此这篇关于Vue子组件调用父组件事件的3种方法的文章就介绍到这了,更多相关Vue子组件调用父组件事件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue实现折叠展开收缩动画效果

    vue实现折叠展开收缩动画效果

    这篇文章主要介绍了vue实现折叠展开收缩动画,通过scrollHeight实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2023-11-11
  • vue项目实现中英文切换的详细步骤

    vue项目实现中英文切换的详细步骤

    这篇文章主要给大家介绍了关于vue项目实现中英文切换的详细步骤,项目中经常有中英文切换的功能,接下来就简单实现以下这个功能,文中通过代码介绍的非常详细,需要的朋友可以参考
    2023-11-11
  • Vue实现视频播放vue-video-player、dplayer方式

    Vue实现视频播放vue-video-player、dplayer方式

    这篇文章主要介绍了Vue实现视频播放vue-video-player、dplayer方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • vue设置导航栏、侧边栏为公共页面的例子

    vue设置导航栏、侧边栏为公共页面的例子

    今天小编就为大家分享一篇vue设置导航栏、侧边栏为公共页面的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • el-form resetFields无效和validate无效的可能原因及解决方法

    el-form resetFields无效和validate无效的可能原因及解决方法

    本文主要介绍了el-form resetFields无效和validate无效的可能原因及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 解析Vue 2.5的Diff算法

    解析Vue 2.5的Diff算法

    本文将对于Vue 2.5.3版本中使用的Virtual Dom进行分析。updataChildren是Diff算法的核心,所以本文对updataChildren进行了图文的分析。下面通过本文给大家分享Vue 2.5的Diff算法,需要的朋友参考下吧
    2017-11-11
  • vue+vant使用图片预览功能ImagePreview的问题解决

    vue+vant使用图片预览功能ImagePreview的问题解决

    这篇文章主要介绍了vue+vant使用图片预览功能ImagePreview的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Vue组件实现数字滚动抽奖效果

    Vue组件实现数字滚动抽奖效果

    这篇文章主要为大家详细介绍了Vue组件实现数字滚动抽奖效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 记一次微信小程序与webviewH5通信的踩坑记录

    记一次微信小程序与webviewH5通信的踩坑记录

    uniapp开发小程序的过程中主、分包有大小限制,随着业务的增加,使用web-view加载H5的方式,往往纯加载并不能满足业务需求,这个时候就得了解小程序与H5的交互,这篇文章主要给大家介绍了关于微信小程序与webviewH5通信的踩坑记录,需要的朋友可以参考下
    2024-07-07
  • 解决vue中使用swiper插件问题及swiper在vue中的用法

    解决vue中使用swiper插件问题及swiper在vue中的用法

    Swiper是纯javascript打造的滑动特效插件,面向手机、平板电脑等移动终端。这篇文章主要介绍了解决vue中使用swiper插件及swiper在vue中的用法,需要的朋友可以参考下
    2018-04-04

最新评论