const Submit = () => { this.$refs["formRef"].validate().then(() => { console.info("通过"); }) .catch(() => { console.info("不通过"); }); }为什么报错Uncaught TypeError: Cannot read properties of undefined (reading '$refs')
时间: 2024-03-16 13:42:25 浏览: 109
在 Vue 中,`this.$refs` 是访问组件中的 ref 的方法,但是在函数组件中,`this` 不能用于访问组件实例。
如果你需要访问组件中的 ref,可以使用 `Vue.ref()` 创建一个 ref,并将其传递给子组件,或者使用 `getCurrentInstance()` 方法获取当前组件实例。
所以,你需要将 `Submit` 组件改为以下格式:
```
import { ref, getCurrentInstance } from 'vue';
const Submit = () => {
const formRef = ref(null);
const instance = getCurrentInstance();
const handleSubmit = () => {
instance.refs["formRef"].validate().then(() => {
console.info("通过");
}).catch(() => {
console.info("不通过");
});
};
return {
formRef,
handleSubmit,
};
};
```
在上面的代码中,我们使用 `ref` 创建了一个名为 `formRef` 的 ref,并使用 `getCurrentInstance()` 获取了当前组件实例。然后,在 `handleSubmit()` 函数中,我们使用 `instance.refs` 访问组件实例中的 ref。
另外,你需要在模板中将 `formRef` 传递给表单组件:
```
<template>
<Form ref="formRef">
<!-- 表单内容 -->
</Form>
<Button @click="handleSubmit">提交</Button>
</template>
```
阅读全文