Vue3-ts报错:类型“never”上不存在属性“resetFields“

本文主要是介绍Vue3-ts报错:类型“never”上不存在属性“resetFields“,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Vue3-ts报错:类型“never”上不存在属性“resetFields“

在 Vue3 项目中使用表单的时候,通常有验证环节,在 script 中:

const showModal = ref(false);
const isRegistering = ref(false); // 新增状态
const formRef = ref(null);
const formState = ref({username: '',password: '',repeatPassword: '' // 仅在注册时使用
});const handleSubmit = () => {if (formRef.value) {formRef.value.validate((errors: any) => {if (!errors) {console.log('提交的数据', formState.value);// 在这里添加提交表单的逻辑}});} else {console.error('表单数据不存在');}
};const handleReset = () => {if (formRef.value) {formRef.value.resetFields();} else {console.error('表单数据不存在');}
};

此时会出现报错:

类型“never”上不存在属性“resetFields“

问题原因

const formRef = ref(null);

此时formRef.value 的类型是 never ,要避免这个错误,将 ref 的初始值改为空即可。

解决方式

修改formRef

const formRef = ref();

完整代码(简单的注册登录组件)

<template><div class="container"><n-modal v-model:show="showModal" title="登录/注册"><div class="form"><p>欢迎使用Promptate</p><n-form ref="formRef" :model="formState" :rules="rules"><n-form-item label="用户名" path="username"><n-input v-model:value="formState.username" placeholder="请输入用户名" /></n-form-item><n-form-item label="密码" path="password"><n-input v-model:value="formState.password" placeholder="请输入密码" type="password" /></n-form-item><!-- 注册时添加重复密码字段 --><n-form-item v-if="isRegistering" label="重复密码" path="repeatPassword"><n-input v-model:value="formState.repeatPassword" placeholder="请再次输入密码" type="password" /></n-form-item><div class="btnGroup"><n-button @click="handleSubmit">{{ isRegistering ? '注册' : '登录' }}</n-button><n-button @click="handleReset">重置</n-button></div></n-form><div class="toggle-action" @click="toggleForm">{{ isRegistering ? '已有账号?登录' : '没有账号?注册' }}</div></div></n-modal><n-button @click="showModal = true" class="btn">登录/注册</n-button></div>
</template><script setup lang="ts">
import { ref } from 'vue';
const showModal = ref(false);
const isRegistering = ref(false); // 新增状态
const formRef = ref();
const formState = ref({username: '',password: '',repeatPassword: '' // 仅在注册时使用
});// 根据当前模式(登录/注册)调整验证规则
const rules = ref({username: {required: true,message: '请输入用户名',trigger: 'blur'},password: {required: true,message: '请输入密码',trigger: 'blur'},repeatPassword: isRegistering.value ? {required: true,message: '请再次输入密码',trigger: 'blur'} : {}
});const handleSubmit = () => {if (formRef.value) {formRef.value.validate((errors: any) => {if (!errors) {console.log('提交的数据', formState.value);// 在这里添加提交表单的逻辑}});} else {console.error('表单数据不存在');}
};const handleReset = () => {if (formRef.value) {formRef.value.resetFields();} else {console.error('表单数据不存在');}
};const toggleForm = () => {isRegistering.value = !isRegistering.value;
};
</script><style scoped lang="scss">
.btn {margin-left: 10px;
}.container {display: flex;align-items: center;text-align: center;
}p {text-align: center;font-size: 20px;
}.form {background-color: white;width: 400px;padding: 20px 50px;border-radius: 5px;box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); 
}.btnGroup {display: flex;justify-content: center;gap: 16px; /* 这会在按钮之间创建16px的间隙 */
}.toggle-action {margin-top: 20px;text-align: center;color: #409eff;cursor: pointer;
}
</style>

这篇关于Vue3-ts报错:类型“never”上不存在属性“resetFields“的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/609930

相关文章

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法

《Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法》本文解析Spring框架中BeanCreationExce... 目录引言一、问题描述1.1 报错示例假设我们有一个简单的Java类,代表一个用户信息的实体类:然后,

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

C#之枚举类型与随机数详解

《C#之枚举类型与随机数详解》文章讲解了枚举类型的定义与使用方法,包括在main外部声明枚举,用于表示游戏状态和周几状态,枚举值默认从0开始递增,也可手动设置初始值以生成随机数... 目录枚举类型1.定义枚举类型(main外)2.使用生成随机数总结枚举类型1.定义枚举类型(main外)enum 类型名字