React-hook-form-mui (一):基本使用

前言

在项目开发中,我们选择了React+MUI作为技术栈。在使用MUI构建form表单时,我们发现并没有与antd类似的表单验证功能,于是我们选择了MUI推荐使用的react-hook-form-mui库去进行验证。但是发现网上关于这个库的使用方法和demo比较少且比较简单,并没有复杂的表单验证的demo。

因此本文及以下几篇文章,会从简到难讲解如何使用。希望通过这几篇文章的介绍,能够帮助你入门react-hook-form-mui

优势介绍

react-hook-form-mui可以帮助开发人员更轻松地构建表单,它结合了React Hook FormMaterial-UI组件库。它提供了一些预定义的表单组件,如TextFieldElementCheckboxElement、等,可以直接使用。此外,它还提供了一些自定义的表单组件,如PasswordElementDatePickerElement等,可以根据需要进行定制。

使用react-hook-form-mui,开发人员可以更快速地构建表单,并且可以轻松地进行表单验证和数据处理。

简单Demo

下面是一个以React MUI react-hook-form-mui简单用例

javascript 复制代码
import React from 'react';
import { useForm } from 'react-hook-form';
import { Button } from '@mui/material';
import { FormContainer, TextFieldElement } from 'react-hook-form-mui';

// 定义表单数据类型
export interface UserSettings{
  firstName: string;
  lastName: string;
}

const MyForm = () => {
  // 使用 useForm 声明一个 formContext
  const formContext = useForm<UserSettings>({
    // 初始化表单数据
    defaultValues: {
      firstName: '',
      lastName: ''
    }
  });

  // 表单提交时的回调函数
  const onSubmit = (data) => {
    console.log(data);
  };

  return (
    // 使用 FormContainer 包裹表单组件
    <FormContainer
        formContext={formContext}
        // 表单提交成功时的回调函数
        onSuccess={(data) => {
          onSubmit (data);
        }}
      >
        {/* 使用 TextFieldElement 渲染表单组件 */}
        <TextFieldElement name="firstName" label="First Name" />
        <TextFieldElement name="lastName" label="Last Name" />
        <Button type="submit">Submit</Button>
    </FormContainer>
  );
};

export default MyForm;

首先,我们通过useForm来声明一个formContext, 在formContext可以声明defaultValues来初始化form表单的值。

其次, 在formContainer中,声明onSuccess方法,当点击type='submit',按钮时,会回调用其中的方法。onSuccess方法中的data参数,会返回和defaultValues中一样的数据类型。

总结

以上是关于React-hook-form-mu的最基础的用法。希望本文会对你有所帮助,如果有什么问题,可在下方留言沟通。

相关推荐
PBitW5 分钟前
Electron 脚本调用大坑!害惨我了
前端·electron
文心快码BaiduComate6 分钟前
我用文心快码开发了一款「积木工坊」:用AI让每个孩子都成为小小建筑师
前端·前端框架
掘金一周8 分钟前
高德地图与Three.js结合实现3D大屏可视化 | 掘金一周 1.8
前端·人工智能·后端
zpjing~.~12 分钟前
检查元素内部是否存在具有特定类名的子元素的方法
前端·javascript·html
骑自行车的码农28 分钟前
🕹️ 设计一个 React 重试
前端·算法·react.js
小林攻城狮30 分钟前
echarts 参考线实现数据项之间的差异值标注
前端·echarts
一个很帅的帅哥40 分钟前
nums.sort()和nums.sort((a, b) => a - b)
javascript
青莲8431 小时前
Java并发编程高级(线程池·Executor框架·并发集合)
android·前端·面试
程序员Agions1 小时前
Flutter 邪修秘籍:那些官方文档不会告诉你的骚操作
前端·flutter
白驹过隙不负青春1 小时前
Docker-compose部署java服务及前端服务
java·运维·前端·docker·容器·centos