一.setup语法糖写法

1.子组件通过defineExpose暴露对象和方法 

child.vue

<template>
	。。。
</template>

<script setup>
	import { defineExpose } from "vue";
	
	const click = () => {
		。。。
	};
	defineExpose({ click });
</script>

2.父组件

<template>
	<child ref="refChild" ref="child"></pop>
</template>

<script setup>
	import child from "./child";

	const refChild = ref();
	refChild.value.click();
</script>

二.选项式API写法

        父组件:

<!-- 父组件 app.vue -->
<template>
  <div class="itxst">
    <!-- 使用 ref  命令 -->
    <child ref="childComp"/>
    <button @click="onClick">点击试一试</button>
  </div>
</template>
<script >
import child from "./child.vue";
export default {
  name: "app",
  //注册组件
  components: {
    child,
  },
  methods: {
    onClick: function () {
      //获取到 子组件的  数据
      let msg = this.$refs.childComp.message;
      //执行了子组件的 play方法
      this.$refs.childComp.play();
    },
  },
};
</script> 

        子组件: 

<!-- 子组件 child.vue -->
<template>
  <div class="itxst">
    {{ title }}
  </div>
</template>
<script>
//选项式默认当前实例是全部暴露
export default {
  name: "demo",
  //默认全部暴露 也可以通过expose控制那些需要暴露
  //expose: ['play'],
  data() {
    return {
      title: "www.itxst.com",
    };
  },
  methods: {
    play: function () {
      this.title = "你调用了子组件的方法";
    },
  },
};
</script>

Logo

前往低代码交流专区

更多推荐