首页 > 其他分享 >React-hook-form-mui(一):基本使用

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

时间:2024-01-14 10:01:07浏览次数:24  
标签:react form 表单 React hook mui

前言

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

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


优势介绍

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

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

简单Demo

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

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的最基础的用法。希望本文会对你有所帮助,如果有什么问题,可在下方留言沟通。


标签:react,form,表单,React,hook,mui
From: https://blog.51cto.com/u_15319978/9238346

相关文章

  • React 详解(1)
    React简介React基础JSX的本质JSX并不是标准的JS语法,它是JS的语法扩展,浏览器本身不能识别,需要通过解析工具做解析之后才能在浏览器中运行。这里主要依靠BABEL解析工具来解析,下面简单的介绍一下这个解析工具(http://babeljs.io):JSX中使用JS表达式在JSX中可以通过大括号语法......
  • 多种 React 组件通信方式实践
    使用ReactContext基于ReactContext实现跨组件通信的一个常见用例是创建一个能够在不同组件间共享和触发行为的上下文。以下是一个简化的例子,展示了如何在app.tsx中触发其他组件(例如,一个弹窗组件)中的方法。1.创建一个Context首先,我们创建一个新的Context。这个Context将......
  • 3-format的写法与定义
    写法:format定义:字符串格式化格式化输出的好处:1.格式化输出可以让代码更加简洁2.格式化输出可以让代码更加易于维护3.格式化输出可以让代码更加易于阅读4.格式化输出可以让代码更加易于理解5.格式化输出可以让代码更加易于扩展name="王五"#定义一个字符串变量nam......
  • Winform中使用Fleck实现Websocket服务端并读取SQLite数据库中数据定时循环群发消息
    场景Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中:Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中-Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作:Winform中操作Sqlite数据增删改查、程序启动时执......
  • Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中
    场景SpringBoot+Vue整合WebSocket实现前后端消息推送:SpringBoot+Vue整合WebSocket实现前后端消息推送_websocketvue3.0springboot往客户端推送上面实现ws推送数据流程后,需要在windows上使用ws客户端定时记录收到的数据到文件中,这里文件使用SQLite数据库进行存储。Winform中操作S......
  • 基于融合语义信息改进的内容推荐算法。Improved content recommendation algorithm in
    引言路漫漫其修远兮,吾将上下而求索。每天一篇论文,做更好的自己。本文读的这篇论文为发表于2023年5月28日的一篇名为《基于融合语义信息改进的内容推荐算法》(基于融合语义信息改进的内容推荐算法)的文章,文章主要介绍了基于内容的推荐技术在电子商务和教育领域的广泛应用,以及传统基......
  • 2024-01-13 Can't perform a React state update on an unmounted component. This i
    react+antd业务代码报错: Can'tperformaReactstateupdateonanunmountedcomponent.Thisisano-op,butitindicatesamemoryleakinyourapplication.Tofix,cancelallsubscriptionsandasynchronoustasksinauseEffectcleanupfunction.无法对未安装的......
  • 配置jenkins利用gitlab webhook提交自动触发打包
    1、jenkins安装gitlab插件2、gitlab对应的项目生成访问令牌3、jenkins配置api_token此处的api_token就是刚才gitlab生成的访问令牌4、jenkins项目上配置webhook点击“高级”展开拉到最底下生成项目token5、gitlab配置webhook进入gitlab项目的设置--webhook输入je......
  • Terraform 的开源替代:OpenTofu 宣布 GA!
    OpenTofu社区于1月10日宣布OpenTofu项目GA,这是OpenTofu的首个稳定版本(https://github.com/opentofu/opentofu/releases/tag/v1.6.0)!OpenTofu是Linux基金会下的一个由社区驱动的开源项目,是Terraform的开源替代品,用户可根据迁移指南进行迁移:https://opentofu.org/docs/in......
  • pm2启动react项目总是stopped
    执行命令pm2start--name服务名npm--start总是不成功status一直显示stopped使用命令pm2logs查看日志报错如下网上查看这篇教程解决问题原文:https://blog.csdn.net/qq_52912134/article/details/127262835现在项目里面下载一个node-cmdnpminstallnode-cmd--save......