【发布时间】:2021-02-01 01:56:51
【问题描述】:
我目前正在进行自定义验证,如果可能,我希望访问子组件并在其中调用一个方法。
表单包装器
<template>
<form @submit.prevent="handleSubmit">
<slot></slot>
</form>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
setup(props, { slots }) {
const validate = (): boolean => {
if (slots.default) {
slots.default().forEach((vNode) => {
if (vNode.props && vNode.props.rules) {
if (vNode.component) {
vNode.component.emit('validate');
}
}
});
}
return false;
};
const handleSubmit = (ev: any): void => {
validate();
};
return {
handleSubmit,
};
},
});
</script>
当我调用slot.default() 时,我会得到正确的子组件列表并且可以看到它们的道具。但是,vNode.component 始终是 null
我的代码基于example,但它适用于 vue 2。
如果有人可以帮助我,那就太好了,或者这甚至可能做到。
【问题讨论】: