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

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

时间:2024-03-26 14:59:38浏览次数:25  
标签: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 FormMaterial-UI组件库。它提供了一些预定义的表单组件,如TextFieldElementCheckboxElement、等,可以直接使用。此外,它还提供了一些自定义的表单组件,如PasswordElementDatePickerElement等,可以根据需要进行定制。
使用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.csdn.net/m0_73117087/article/details/132408674

相关文章

  • 使用 React 和 ECharts 创建地球模拟扩散和飞线效果
    在本博客中,我们将学习如何使用React和ECharts创建一个酷炫的地球模拟扩散效果。我们将使用ECharts作为可视化库,以及React来构建我们的应用。地球贴图在文章的结尾。最终效果准备工作首先,确保你已经安装了React,并创建了一个新的React应用。如果你还没有安装R......
  • Android证书校验出现java.io.IOException: Invalid keystore format错误的解决方案
    使用下面命令keytool-list-v-keystore签名.keystore出现错误java.io.IOException:Invalidkeystoreformat一般出现这种错误的情况有2种可能1.密码错误2.JDK版本问题1.如果是JDK8生成的keystore,然后用JDK11(+)执行是没问题的,当前情况不需要解决,因为是成功......
  • React Hooks的出现解决了什么问题?
    ReactHooks是React16.8版本引入的一个革命性新特性,它极大地改变了我们编写React组件的方式,并解决了许多长期存在的问题。Hooks的引入不仅简化了状态逻辑的管理,还提高了代码的可读性和可维护性。一、ReactHooks解决了什么问题?1、组件间状态逻辑复用困难在Hooks出现之......
  • 界面控件DevExpress WinForms/WPF v23.2 - 电子表格支持表单控件
    DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!表单控件表示交互元素(按钮、复选框和下拉列表),并在......
  • platform_driver驱动及设备驱动匹配标识符
    一、设备树platform_driver示例设备树中需要定义一个设备节点,包含设备的相关信息和属性。例如,假设有一个名为"my_device"的设备,其设备树节点可能如下所示:/dts-v1/;/{compatible="example,my_device";my_device{compatible="example,my_device";......
  • Pytorch之transforms
    文章目录一、transforms是什么?二、Tensor1.为何引入tensor类型的变量呢2.代码示例二、Normalize类三、Resize三、Compose三、Random_Crop一、transforms是什么?transforms对应transform.py文件。可以理解成一个工具箱,里面定义的各种类和方法,可以处理图片,对图片进......
  • Transformer
    Transformer自注意力机制自注意力机制核心就是计算句子在编码过程中每个位置上的注意力权重,然后再以权重和的方式计算整个句子的隐含向量表示attention核心?self-attention核心公式:\(\text{Attention}(Q,K,V)=\text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V\)其......
  • react 中echarts-for-react使用resize解决图表自适应问题
     importReact,{PureComponent}from"react";importReactEchartsfrom'echarts-for-react';import{useEventListener}from'ahooks';useEventListener('resize',()=>{ref?.current?.getEch......
  • React Native 应用打包上架
    引言在将ReactNative应用上架至AppStore时,除了通常的上架流程外,还需考虑一些额外的优化策略。本文将介绍如何通过配置AppTransportSecurity、ReleaseScheme和启动屏优化技巧来提升ReactNative应用的上架质量和用户体验。配置AppTransportSecurity在iOS9引入的......
  • 学习人工智能:Attention Is All You Need-3-训练;结果;结论;Transformer模型相当于 E=MC^2
    5训练Training本节描述了我们模型的训练方案。5.1训练数据和批次处理TrainingDataandBatching我们在标准的WMT2014英德数据集上进行了训练,该数据集包含约450万个句子对。句子使用字节对编码[3]进行编码,其共享源-目标词汇表包含约37000个标记。对于英法翻译,我们使用......