做鞋子有什么好网站,申请建设网站的请示,做电子商务网站 费用,设计师可以在哪些网站接单前言
在上一篇文章中#xff0c;我们介绍了react-hook-form-mui的基础用法。本文将着重讲解表单验证功能。 react-hook-form-mui提供了丰富的表单验证功能#xff0c;可以通过validation属性来设置表单验证规则。本文将详细介绍validation的三种实现方法#xff0c;以及如何…前言
在上一篇文章中我们介绍了react-hook-form-mui的基础用法。本文将着重讲解表单验证功能。 react-hook-form-mui提供了丰富的表单验证功能可以通过validation属性来设置表单验证规则。本文将详细介绍validation的三种实现方法以及如何与提交按钮联动。
Demo
以下是一个表单验证的 demo我们将通过三种方法来实现表单验证
import React from react;
import { useForm } from react-hook-form;
import { Button } from mui/material;
import { FormContainer, TextFieldElement } from react-hook-form-mui;const URL_REGEXP \/^[A-Za-z][A-Za-z\d.-]*:\/*(?:\w(?::\w)?)?[^\s/](?::\d)?(?:\/[\w#!:.,?%\-/]*)?$\/;export interface UserSettings {firstName: string;lastName: string;url: string;
}/*** descpition: lastName长度验证* param _value 当前表单元素的值*/
const validateLastNameLength (_value: string) {return _value.length 2 ? Url is invalid! as any : Promise.resolve();
};const MyForm () {const formContext useFormUserSettings({defaultValues: {firstName: ,lastName: ,url: },mode: all // 验证模式切换为all});const onSubmit (data: UserSettings) {console.log(data);};return (FormContainerformContext{formContext}onSuccess{(data) {onSubmit(data);}}{/* 使用 validation 属性设置表单验证规则 */}TextFieldElementnamefirstNamelabelFirst Namevalidation{{required: First Name is required!}}/TextFieldElementnamelastNamelabelFirst Namevalidation{{validate: validateLastNameLength}}/TextFieldElementnameurllabelUrl/ButtontypesubmitButtontypesubmit// 当表单所有元素都验证通过并且表单元素发生过改变后可以点击提交按钮disabled{!formContext.formState.isValid || !formContext.formState.isDirty}Submit/Button/FormContainer);
};export default MyForm;验证触发模式 mode 首先我们需要在formContext中规定mode属性这个属性用来确定form何时触发验证规则。mode提供了以下5中触发方式:
ValidationMode {onBlur: onBlur;onChange: onChange;onSubmit: onSubmit;onTouched: onTouched;all: all;
}根据项目需求开发者可自行选择触发方式本例中使用的是all即需要匹配所有触发方式。 三种表单验证的方法: 自定义的required的提示
validation{{required: First Name is required!}}通过正则匹配来验证表单元素
validation{{pattern: {value: URL_REGEXP,message: Url is invalid!}}}通过自定义的验证规则来验证表单元素
validation{{validate: validateLastNameLength
}}通过以上三种方式我们可以规定用户输入表单的值并提供自定义的错误提示。 何时能够点击提交按钮 在react-hook-form-mui中提供了简便的api去控制是否能够点击提交按钮。分别是
formContext.formState.isValid: 验证表单元素是否合法。formContext.formState.isDirty: 验证表单元素是否发生过改变。
通过这两种方法我们可以很轻松地控制何时能够点击提交按钮。
总结
以上是关于React-hook-form-mui的表单验证的的用法。希望本文会对你有所帮助。如果有什么问题可在下方留言沟通。