vue3父组件调用子组件方法
·
需求:在vue3中需要在父组件调用子组件的方法
思路:通过ref和defineExpose直接暴露给父组件
1.子组件暴露表单验证方法
<template>
<a-form ref="formRef" :model="formState" :rules="rules">
<a-form-item label="用户名" name="username">
<a-input v-model:value="formState.username" />
</a-form-item>
</a-form>
</template>
<script setup>
import { ref } from 'vue';
const formRef = ref(); // 表单引用
const formState = ref({ username: '' }); // 表单数据
const rules = { // 验证规则
username: [{ required: true, message: '请输入用户名' }]
};
// 暴露给父组件的验证方法
const validate = () => formRef.value.validate();
defineExpose({ validate }); // 暴露方法
</script>
2.父组件触发子组件表单验证
<template>
<ChildForm ref="childFormRef" />
<a-button @click="handleSubmit">提交</a-button>
</template>
<script setup>
import { ref } from 'vue';
import ChildForm from './ChildForm.vue';
const childFormRef = ref(); // 子组件引用
const handleSubmit = async () => {
try {
const values = await childFormRef.value.validate();
console.log('验证通过,数据:', values);
// 提交数据逻辑...
} catch (error) {
console.log('验证失败', error);
}
};
</script>
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)