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

157 阅读1分钟

父组件:

<template>
  <div>
    <hello-world ref="s" :msg="obj.name"></hello-world> //子组件
        <button @click="aa">按钮</button>
  </div>
</template>

<script>
import { onMounted, ref } from "vue";
import HelloWorld from "./components/HelloWorld.vue";
export default {
  components: {
    HelloWorld,
  },
  setup() {
    let s = ref(null);//这里是获取子组件实例 (注意变量’s’ 要与 ref=’s’保持一致, 否则获取不到)
       function aa() {
      let a=s.value.ss();//调用子组件的方法
              }
    onMounted(() => { //如果是想进入页面就调用子组件的方法, 需写在 onMounted 生命周期函数中
      console.log(s);

    });

    return {
      aa,
      s,
        };
  },

};
</script>

子组件:

<template>
  <div>
    <input v-model="msg" type="text" />
  </div>
</template>

<script>

import { ref } from "@vue/reactivity";
export default {
  props: {
    msg: {},
  },
  setup(props,{ expose }) { //暴露自己的方法需用到 expose 方法
    function ss() {
      return props
    }

    expose({ //使用方法
      ss,
    });
    return {
      ss,
    };
  },
};

</script>