vue 父组件调用子组件方法ref

Posted coinisi_li

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 父组件调用子组件方法ref相关的知识,希望对你有一定的参考价值。

一、ref被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的$refs对象上

vue中如果父组件想调用子组件的方法,可以在子组件中加上ref,然后通过this.$refs.ref.method调用。

父组件:

<template>
  <div @click="fatherMethod">
    <orderchild ref="child"></orderchild>
  </div>
</template>
<script>
  import orderchild from '~/components/orderchild.vue';
  export default 
    components: 
      orderchild
    ,
    methods: 
      fatherMethod() this.$refs.child.childMethods();
      
    
  ;
</script>

 子组件:

<template>
  <div>name</div>
</template>
<script>
  export default 
    data() 
      return 
        name: '测试'
      ;
    ,
    methods: 
      childMethods() 
        console.log(this.name);
      
    
  ;
</script>

在父组件中, this.$refs.child 返回的是一个vue实例,可以直接调用这个实例的方法

二、在vue2.0和vue3.0中,ref方法有一些变化:

vue2.0 父组件

<Table ref="eleTable" @handle="handleFun"></Table>

methods: 

this.$refs.eleTable.子组件的方法名+()

this.$refs.eleTable.子组件的属性名

vue3.0 父组件

  <Table ref="eleTable" @handle="handleFun"></Table>

import  ref   from 'vue'

setup()  
   //ref方法
    const eleTable = ref()  //eleTable是页面ref后面对应的名字
    const clickSon = () =>
      eleTable.value.changeShowText() //调用子组件的方法
      let arr = eleTable.value.tableData //获取子组件 setup 里面定义的变量
   

 

参考:vue3.0中使用ref来调用子组件的方法_普通网友的博客-CSDN博客_ref调用子组件方法 

vue中父组件调用子组件函数

用法: 子组件上定义ref="refName",  父组件的方法中用 this.$refs.refName.method 去调用子组件方法

详解: 父组件里面调用子组件的函数,父组件先把函数/方法以属性形式传给子组件;那么就需要先找到子组件对象 ,即  this.$refs.refName.

然后再进行调用,也就是 this.$refs.refName.method

如下:

子组件:

<template>
  <div>
    childComponent
  </div>
</template>
 
<script>
  export default {
    name: "child",
    methods: {
      childClick(e) {
        console.log(e)
      }
    }
  }
</script>

父组件:

<template>
  <div>
    <button @click="parentClick">点击</button>
    <Child ref="mychild" />   //使用组件标签
  </div>
</template>
 
<script>
  import Child from ‘./child‘;   //引入子组件Child
  export default {
    name: "parent",
    components: {
      Child    // 将组件隐射为标签
    },
    methods: {
      parentClick() {
        this.$refs.mychild.childClick("我是子组件里面的方法哦");  // 调用子组件的方法childClick
      }
    }
  }
</script>

 

以上是关于vue 父组件调用子组件方法ref的主要内容,如果未能解决你的问题,请参考以下文章

vue直接在父组件中调用子组件的方法

vue子组件调用父组件的方法

vue 子父组件相互调用的方法 2018-11-09

vue 父组件调用子组件方法

Vue父组件调用子组件事件的两种方法

vue 子组件控制父组件的 三种方法