发布于 2026-01-06 0 阅读
0

高效表单创建的顶级 React 表单库简介 结论

用于高效创建表单的顶级 React 表单库

介绍

结论

介绍

作为前端开发人员,表单在我们的日常工作中扮演着至关重要的角色。与其每次都从头开始编写表单,不如了解各种可用的库来简化表单构建过程。

在本文中,我们将探讨一些顶级的 React 表单库,它们可以帮助我们轻松创建高效且用户友好的表单。

1. SurveyJS React 表单库

SurveyJS React 表单库是一个用于 React 应用程序的工具,它可以帮助用户在客户端创建动态表单。它使用 JSON 对象来定义表单的结构和行为。

它是流行的开源表单库之一,在GitHub上有 3.9k 个 star,在npm上有 17.4k 次用户下载

SurveyJS

特征:

  • JavaScript 应用程序的动态表单
  • 内置 20 多种题型,并支持自定义题型
  • 内置主题和 CSS 自定义
  • 答案验证
  • TypeScript 支持
  • 与任何后端框架集成(包括 PHP、NodeJS 和 ASP.NET 的示例)
  • 兼容任何服务器+数据库组合;集成第三方组件

如何使用

以下是在 React 应用程序中添加 React 调查表单的步骤:

这将生成类似这样的形式:



import { useCallback } from "react";

import "survey-core/defaultV2.min.css";
import { Model } from "survey-core";
import { Survey } from "survey-react-ui";

const surveyJson = {
  elements: [
    {
      name: "FirstName",
      title: "Enter your first name:",
      type: "text",
    },
    {
      name: "LastName",
      title: "Enter your last name:",
      type: "text",
    },
  ],
};

function App() {
  const survey = new Model(surveyJson);
  survey.focusFirstQuestionAutomatic = false;

  const alertResults = useCallback((sender) => {
    const results = JSON.stringify(sender.data);
    alert(results);
  }, []);

  survey.onComplete.add(alertResults);

  return <Survey model={survey} />;
}

export default App;


Enter fullscreen mode Exit fullscreen mode

2. React Hook 表单

React Hook 表单

React Hook Form——高性能、灵活且可扩展的表单,并带有易于使用的验证功能。它是最受欢迎的表单库之一,在GitHub上拥有 33.5k 个 star,在npm上拥有 310 万次用户下载

特征:

  • 性能:减少重新渲染次数,减少验证计算,加快挂载速度。
  • 超轻量级:包大小至关重要。React Hook Form 是一个没有任何依赖项的超小型库。
  • HTML 标准:支持原生 HTML 表单验证
  • 易于采用:无需其他依赖项即可轻松采用。
  • 支持 Yup、Zod、AJV、Superstruct、Joi 等

安装方法:

npm i react-hook-form
Enter fullscreen mode Exit fullscreen mode

使用方法:

    import { useForm } from 'react-hook-form';
    function App() {
      const {
        register,
        handleSubmit,
        formState: { errors },
      } = useForm();

      return (
        <form onSubmit={handleSubmit((data) => console.log(data))}>
          <input {...register('firstName')} />
          <input {...register('lastName', { required: true })} />
          {errors.lastName && <p>Last name is required.</p>}
          <input {...register('age', { pattern: /\d+/ })} />
          {errors.age && <p>Please enter number for age.</p>}
          <input type="submit" />
        </form>
      );
    }
Enter fullscreen mode Exit fullscreen mode

上面的代码是在 React 组件中使用useForm该库中的 hook的示例。react-hook-form

useForm钩子用于管理表单状态和验证。

在这个示例中,该register函数用于注册表单中的输入字段,并返回每个输入字段所需的属性。该handleSubmit函数被传递给onSubmit表单的属性,并负责处理表单提交。

formState返回的对象包含useForm表单的当前状态,包括验证过程中检测到的任何错误。

该示例定义了一个包含三个输入字段的表单:名字、姓氏和年龄。姓氏为必填项,年龄必须为数字。
如果用户将姓氏字段留空或在年龄字段中输入非数字值,则会显示错误消息。

表单提交后,该handleSubmit函数会将表单数据记录到控制台。

3. 福米克

福米克

Formik使我们能够轻松构建复杂的表单。它也是 React 和 React Native 中最受欢迎的开源表单库之一。它在GitHub上拥有 3.2 万颗星,在npm上拥有240 万次用户下载

特征:

  • 声明式: Formik 处理重复且烦人的事情——跟踪值/错误/访问过的字段、协调验证和处理提交。
  • 直观易用: Formik 让调试、测试和分析表单变得轻而易举,因为它始终在 React 核心框架内运行,避免使用任何魔法。
  • 易于采用: Formik 不使用 Redux 或 MobX 等外部状态管理库。

安装方法:

    npm i formik
Enter fullscreen mode Exit fullscreen mode

使用方法:

    // Render Prop
    import React from 'react';
    import { Formik, Form, Field, ErrorMessage } from 'formik';

    const Basic = () => (
      <div>
        <h1>Any place in your app!</h1>
        <Formik
          initialValues={{ email: '', password: '' }}
          validate={values => {
            const errors = {};
            if (!values.email) {
              errors.email = 'Required';
            } else if (
              !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(values.email)
            ) {
              errors.email = 'Invalid email address';
            }
            return errors;
          }}
          onSubmit={(values, { setSubmitting }) => {
            setTimeout(() => {
              alert(JSON.stringify(values, null, 2));
              setSubmitting(false);
            }, 400);
          }}
        >
          {({ isSubmitting }) => (
            <Form>
              <Field type="email" name="email" />
              <ErrorMessage name="email" component="div" />
              <Field type="password" name="password" />
              <ErrorMessage name="password" component="div" />
              <button type="submit" disabled={isSubmitting}>
                Submit
              </button>
            </Form>
          )}
        </Formik>
      </div>
    );

    export default Basic;

Enter fullscreen mode Exit fullscreen mode

上面的使用示例定义了一个组件,该组件渲染一个包含电子邮件和密码输入框以及提交按钮的表单。Formik
组件封装了该表单,并提供了用于处理表单状态、验证和提交的功能。

initialValues属性定义了表单输入的初始值,该validate函数用于表单验证。如果检测到任何错误,则会将其作为对象返回。

onSubmit函数在表单提交时调用,可用于执行任何必要的操作,例如向服务器发送数据或更新应用程序状态。

Formik 组件接收一个渲染属性,用于定义表单字段和错误消息。该Field组件用于定义表单输入字段,并ErrorMessage用于显示任何验证错误。

最后,表单提交时提交按钮会被禁用,以防止重复提交。
这只是 Formik 如何在 React 应用中使用来管理具有复杂验证和提交逻辑的表单的一个示例。

React Hook 表单与 Formik 的比较

React Hook 表单 福米克
成分 不受控制与受控 受控
API 钩子 组件 + 挂钩
包装尺寸 小的
react-hook-form@7.27.0
**8.5KB**
中等的
formik@2.1.4
**15KB**
验证 内置YupZodJoiSuperstruct,并允许自定义验证。 自定义或Yup
学习曲线 低至中等 中等的

4. rc-field-form

rc-field-form

rc-field-form - React Performance First Form Component(React 性能优先表单组件)。它在GitHub上有 783 个 star,在npm上有 885k 次用户下载

特征:

安装方法:

 npm i rc-field-form
Enter fullscreen mode Exit fullscreen mode

使用方法:


    import Form, { Field } from 'rc-field-form';

    const Input = ({ value = "", ...props }) => <input value={value} {...props} />;

    const Demo = () => {
      return (
        <Form
          onFinish={(values) => {
            console.log("Finish:", values);
          }}
        >
          <Field name="username">
            <Input placeholder="Username" />
          </Field>
          <Field name="password">
            <Input placeholder="Password" />
          </Field>

          <button>Submit</button>
        </Form>
      );
    };

    export default Demo;

Enter fullscreen mode Exit fullscreen mode

上面的使用示例定义了一个名为 `<form>` 的组件Demo,该组件渲染一个包含用户名和密码两个输入字段的表单。

Form组件封装了表单,并提供处理表单状态、验证和提交的功能。onFinish当表单提交时,会调用该属性并接收一个包含表单值的对象。

Field组件用于定义表单字段并提供验证规则。`field`name属性用于定义字段名称,任何自定义验证规则都可以使用该rules属性定义。

Input组件是一个自定义输入字段,它接收value主属性以及任何其他附加属性。它用于定义表单的输入字段。
最后,提交按钮定义在组件外部Field,用于触发表单提交。

这只是如何在 React 应用程序中使用 rc-field-form 来管理表单字段和处理表单提交的一个例子。

5. React 最终形式

React 最终形态

React Final Form是一款高性能的基于订阅的 React 表单状态管理组件。它遵循观察者模式,组件会在事件发生时订阅这些事件。它不会重新渲染整个表单,而只会重新渲染已订阅的字段。该组件在GitHub上拥有 7.2k 个 star ,在npm上拥有364k 次用户下载

特征:

  • 零依赖项(不会影响软件包大小)
  • 仅依赖项:React 和 React Final Form
  • 选择加入订阅——只接收我们需要的最新信息!

安装方法:

    npm i react-final-form
Enter fullscreen mode Exit fullscreen mode

使用方法:


    import { Form, Field } from 'react-final-form'

    const MyForm = () => (
      <Form
        onSubmit={onSubmit}
        validate={validate}
        render={({ handleSubmit }) => (
          <form onSubmit={handleSubmit}>
            <h2>Simple Default Input</h2>
            <div>
              <label>First Name</label>
              <Field name="firstName" component="input" placeholder="First Name" />
            </div>

            <h2>An Arbitrary Reusable Input Component</h2>
            <div>
              <label>Interests</label>
              <Field name="interests" component={InterestPicker} />
            </div>

            <h2>Render Function</h2>
            <Field
              name="bio"
              render={({ input, meta }) => (
                <div>
                  <label>Bio</label>
                  <textarea {...input} />
                  {meta.touched && meta.error && <span>{meta.error}</span>}
                </div>
              )}
            />

            <h2>Render Function as Children</h2>
            <Field name="phone">
              {({ input, meta }) => (
                <div>
                  <label>Phone</label>
                  <input type="text" {...input} placeholder="Phone" />
                  {meta.touched && meta.error && <span>{meta.error}</span>}
                </div>
              )}
            </Field>

            <button type="submit">Submit</button>
          </form>
        )}
      />
    )
Enter fullscreen mode Exit fullscreen mode

上面的代码示例展示了如何使用 React Final Form 库创建一个包含多种字段类型的表单,例如文本输入框、可复用的自定义组件和渲染函数。表单组件接收一个onSubmit函数和一个验证函数,分别用于处理表单提交和验证。字段组件用于创建每个字段,它可以接收一个组件属性(用于使用自定义组件渲染字段)或一个渲染属性(用于使用自定义函数渲染字段)。输入值和状态由库管理,任何验证错误都会在用户与表单交互时显示。

rc-field-formReact Final Form 的比较

rc-field-form React 最终形态
成分 一个用于在 React 中构建表单的组件库。 一个用于在 React 中构建表单的库。
API 它提供表单、表单项和其他表单组件,可用于构建表单。 它提供了一个<Form>组件和一个<Field>可用于构建表单的组件。
包装尺寸 RC-Field-Form 的软件包大小约为 105 KB。 React Final Form 的包大小约为 38 KB。
验证 它提供内置的验证规则,例如必填、模式和最大长度。它还允许自定义验证规则。 它通过验证函数提供验证功能,该函数可以作为 prop 传递给<Field>组件。它还允许自定义验证函数。
学习曲线 它提供了良好的文档和示例,方便用户入门。 它还提供了良好的文档和示例,方便用户快速上手。

6. react-credit-cards

react-credit-cards

react-credit-cards - 一个简洁的 React 信用卡组件。它在GitHub上有 2.4k 个 star,在npm上有 27.9k 次用户下载

特征:

安装方法:

npm i react-credit-cards
Enter fullscreen mode Exit fullscreen mode

使用方法:


    import React from 'react';
    import Cards from 'react-credit-cards';

    export default class PaymentForm extends React.Component {
      state = {
        cvc: '',
        expiry: '',
        focus: '',
        name: '',
        number: '',
      };

      handleInputFocus = (e) => {
        this.setState({ focus: e.target.name });
      }

      handleInputChange = (e) => {
        const { name, value } = e.target;

        this.setState({ [name]: value });
      }

      render() {
        return (
          <div id="PaymentForm">
            <Cards
              cvc={this.state.cvc}
              expiry={this.state.expiry}
              focused={this.state.focus}
              name={this.state.name}
              number={this.state.number}
            />
            <form>
                <input
                type="tel"
                name="number"
                placeholder="Card Number"
                onChange={this.handleInputChange}
                onFocus={this.handleInputFocus}
              />
              ...
            </form>
          </div>
        );
      }
    }

Enter fullscreen mode Exit fullscreen mode

上面的代码示例展示了一个简单的 React 信用卡支付表单,它使用react-credit-cards库来显示正在填写的信用卡信息。表单包含卡号、有效期、持卡人姓名和 CVC 安全码的输入框。表单的状态由组件的状态对象管理,其中包含handleInputFocus用于handleInputChange更新状态和跟踪当前焦点输入框的方法。表单提交后,数据可以发送到后端进行处理。

7. formsy-react

formsy-react

formsy-react - 一个用于 React 的表单输入构建器和验证器。它在GitHub上有 761 个 star,在npm上有 25k 次用户下载

特征:

  • 构建任何表单元素组件。不仅限于传统输入框,任何我们想要的组件都可以,而且免费获得验证功能。
  • 添加验证规则并使用简单的语法来使用它们
  • 使用事件处理程序来处理表单的不同状态(例如 onSubmit、onValid 等)。
  • 将外部错误传递给表单以使元素失效(例如来自服务器的响应)
  • 动态地向表单添加表单元素,这些元素将自动注册/注销到表单。

安装方法:

 npm i formsy-react
Enter fullscreen mode Exit fullscreen mode

使用方法:


    // MyInput.js
    import { withFormsy } from 'formsy-react';
    import React from 'react';

    class MyInput extends React.Component {
      constructor(props) {
        super(props);
        this.changeValue = this.changeValue.bind(this);
      }

      changeValue(event) {
        // setValue() will set the value of the component, which in
        // turn will validate it and the rest of the form
        // Important: Don't skip this step. This pattern is required
        // for Formsy to work.
        this.props.setValue(event.currentTarget.value);
      }

      render() {
        // An error message is passed only if the component is invalid
        const errorMessage = this.props.errorMessage;

        return (
          <div>
            <input onChange={this.changeValue} type="text" value={this.props.value || ''} />
            <span>{errorMessage}</span>
          </div>
        );
      }
    }

    export default withFormsy(MyInput);

Enter fullscreen mode Exit fullscreen mode

上面的代码MyInput使用库定义了一个自定义输入组件formsy-reactwithFormsy高阶组件用于包装输入组件,使其能够与库配合使用formsy-react
该组件定义了一个changeValue方法,用于设置输入组件的值并触发表单验证。该render方法返回输入元素以及错误消息,该错误消息仅在组件无效时显示。
此代码可用于使用库创建具有验证功能的自定义输入组件formsy-react

react-credit-cardsformsy-react 的比较

react-credit-cards formsy-react
成分 用于显示信用卡输入字段和验证信用卡信息的组件库。 一个用于在 React 中构建表单的库。
API 它提供了一个**<Cards>**可用于显示信用卡输入字段的组件,并提供了用于自定义的属性。 它提供了一个<Form>组件和一个<Field>可用于构建表单的组件。
包装尺寸 React Credit Cards 的包大小约为 14 KB。 Formsy React 的包大小约为 25 KB。
验证 它内置了信用卡号、有效期和安全码的验证规则,也允许自定义验证规则。 它通过验证函数提供验证功能,该函数可以作为 prop 传递给<Field>组件。它还允许自定义验证函数。
学习曲线 良好的文档和示例,方便快速入门。 它还提供了良好的文档和示例,方便用户快速上手。

8. react-form

react-form

react-form - 用于在 React 中管理表单状态和验证的 Hooks。它在GitHub上有 2.5k 个 star,在npm上有 14.3k 次用户下载

特征:

  • 使用 React Hooks 构建,适用于 React Hooks
  • 高度实用的验证 API,具备一流的异步支持
  • 内置验证防抖功能,可自动取消过期的验证
  • 深度嵌套表单值的字段范围
  • 简洁明了的表单和表单字段元管理
  • 完全记忆,可频繁快速地重新渲染
  • 字段、范围和表单级别的灵活表单 API

安装方法:


    npm i react-form
Enter fullscreen mode Exit fullscreen mode

使用方法:



    import React from "react";
    import ReactDOM from "react-dom";

    import { useForm, useField } from "react-form";

    async function sendToFakeServer(values) {
      await new Promise(resolve => setTimeout(resolve, 1000));
      return values;
    }

    function validateAddressStreet(value) {
      if (!value) {
        return "A street is required";
      }
      return false;
    }

    async function validateName(name, instance) {
      if (!name) {
        return "A name is required";
      }

      return instance.debounce(async () => {
        console.log("checking name");
        await new Promise(resolve => setTimeout(resolve, 1000));
        // All names are valid, so return a false error
        return false;
      }, 500);
    }

    function NameField() {
      const {
        meta: { error, isTouched, isValidating },
        getInputProps
      } = useField("name", {
        validate: validateName
      });

      return (
        <>
          <input {...getInputProps()} />{" "}
          {isValidating ? (
            <em>Validating...</em>
          ) : isTouched && error ? (
            <em>{error}</em>
          ) : null}
        </>
      );
    }

    function AddressStreetField() {
      const {
        meta: { error, isTouched, isValidating },
        getInputProps
      } = useField("address.street", {
        validate: validateAddressStreet
      });

      return (
        <>
          <input {...getInputProps()} />{" "}
          {isValidating ? (
            <em>Validating...</em>
          ) : isTouched && error ? (
            <em>{error}</em>
          ) : null}
        </>
      );
    }

    function MyForm() {
      // Use the useForm hook to create a form instance
      const {
        Form,
        meta: { isSubmitting, canSubmit }
      } = useForm({
        onSubmit: async (values, instance) => {
          // onSubmit (and everything else in React Form)
          // has async support out-of-the-box
          await sendToFakeServer(values);
          console.log("Huzzah!");
        },
        debugForm: true
      });

      return (
        <Form>
          <div>
            <label>
              Name: <NameField />
            </label>
          </div>
          <div>
            <label>
              Address Street: <AddressStreetField />
            </label>
          </div>

          <div>
            <button type="submit" disabled={!canSubmit}>
              Submit
            </button>
          </div>

          <div>
            <em>{isSubmitting ? "Submitting..." : null}</em>
          </div>
        </Form>
      );
    }

    function App() {
      return <MyForm />;
    }

    const rootElement = document.getElementById("root");
    ReactDOM.render(<App />, rootElement);


Enter fullscreen mode Exit fullscreen mode

上面的使用示例是一段 React 代码,它使用该react-form库来处理表单验证和提交。它使用useFormhook 创建了一个表单实例,并使用 hook 定义了两个表单字段(`fields`NameField和 ` fields` AddressStreetFielduseField,每个字段都有自己的验证函数。

MyForm组件负责渲染表单并处理提交事件。表单提交后,它会使用sendToFakeServer函数将表单数据发送到一个模拟服务器。如果表单数据无效,它会显示错误消息;提交过程中,它会显示“正在提交……”的消息。最后,该**App**组件会渲染MyForm自身。

9. 制服

制服

uniforms - 一个用于根据任何模式构建表单的 React 库。它在GitHub上有 1.7k 个 star,在npm上有 13.9k 次用户下载

特征:

  • 自动生成表单
  • 能够渲染所有模式的字段
  • 帮助用户一行代码创建自定义字段
  • 内联和异步表单验证
  • 与各种模式集成
  • 主题范围广泛:

安装方法:


    npm i uniforms

Enter fullscreen mode Exit fullscreen mode

使用方法:


    import React from 'react';
    import { AutoForm } from 'uniforms-semantic';

    import { bridge as schema } from './GuestSchema';

    export function GuestFormBasic() {
      return <AutoForm schema={schema} onSubmit={console.log} />;
    }

Enter fullscreen mode Exit fullscreen mode

上面的代码使用库创建了一个基本表单,该**uniforms-semantic**库具有预定义的架构和一个控制台日志语句,以便在提交表单时显示表单数据。

react-formuniform 变量

react-form 制服
成分 使用React Hooks构建,适用于React Hooks 一个用于在 React 中构建表单的库。
API 字段、范围和表单级别的灵活表单 API 它提供了一组可用于构建表单的组件,包括、、<AutoForm>等等<LongTextField><SelectField>
包装尺寸 React Form 的包大小约为 14 KB。 Uniforms 软件包大小约为 72 KB。
验证 内置验证防抖功能,可自动取消过期的验证 它提供了一个简单的基于模式的验证系统,可用于验证表单输入。它还允许自定义验证函数。
学习曲线 良好的文档和示例,方便快速入门。 良好的文档和示例,方便快速入门。

10. MobX React 表单

MobX React 表单

MobX React Form - 响应式 MobX 表单状态管理。它在GitHub上拥有 1.1k 个 star,在npm上拥有 7.2k 次用户下载

特征:

  • 可扩展验证插件。
  • 同步和异步验证(带承诺和自动错误)。
  • 嵌套字段(带序列化和验证)。
  • 嵌套表单(带嵌套提交和验证钩子)。
  • 事件钩子、事件处理程序和验证钩子
  • 观察者和拦截者
  • 自定义组件的绑定。
  • 支持 Material UI、React Widgets、React Select 等。
  • 专用开发者工具包。

安装方法:

    npm i mobx-react-form
Enter fullscreen mode Exit fullscreen mode

使用方法:


    import React from 'react';
    import { observer } from 'mobx-react';

    export default observer(({ myForm }) => (
      <form onSubmit={myForm.onSubmit}>
        <label htmlFor={myForm.$('email').id}>
          {myForm.$('email').label}
        </label>
        <input {...myForm.$('email').bind()} />
        <p>{myForm.$('email').error}</p>

        {/* ... other inputs ... */}

        <button type="submit" onClick={myForm.onSubmit}>Submit</button>
        <button type="button" onClick={myForm.onClear}>Clear</button>
        <button type="button" onClick={myForm.onReset}>Reset</button>

        <p>{myForm.error}</p>
      </form>
    ));

Enter fullscreen mode Exit fullscreen mode

上面的代码使用 React 和mobx-reactMobX 库创建了一个表单组件。该observer函数用于使组件能够响应由 MobX 管理的表单状态的变化。

表单组件会渲染一个表单元素,其中的输入字段是根据myForm作为 prop 传递的对象生成的。该myForm对象需要包含 MobX 提供的方法和属性,用于处理表单的验证、提交、清除和重置。

输入字段是使用对象bind的方法生成的$,该方法会生成必要的属性和处理程序,使输入字段能够对更改做出反应。

表单还包含用于提交、清除和重置表单的按钮。点击这些按钮时,会分别调用`onmission` myForm.onSubmit、` myForm.onClearclear` 和`reset` 方法。myForm.onReset

11. 房屋形式

HouseForm

HouseForm——一个以字段为先的 React 表单验证框架,它将表单验证和 UI 代码完美融合。它在GitHub上拥有 173 个 star,在npm上拥有 191 次用户下载

特征:

  • 字段优先:将我们的用户界面和验证逻辑整合到一个位置——我们的字段。
  • 无头且运行时无关:HouseForm 可在任何 React 支持的环境中使用,从原生应用程序到 CLI。
  • Zod Powered:轻松为我们的表单字段设置复杂的验证。
  • 灵活的 API:可以根据每个字段的具体情况,灵活组合最适合的验证方法。
  • 轻量级:HouseForm 的压缩包较小,GZIP 压缩后小于 4KB。
  • 速度快:我们的基准测试表明,我们的速度与常见的替代方案持平或更快。

安装方法:


    npm i houseform
Enter fullscreen mode Exit fullscreen mode

使用方法:


    import {Form} from 'houseform';

    const App = () => (
        <Form onSubmit={() => {}}>
            {({submit}) => <button onClick={submit}>Submit</button>}
        </Form>
    )
Enter fullscreen mode Exit fullscreen mode

App组件渲染时Form会将一个onSubmitprop 设置为一个空箭头函数。
Form组件接受一个带有参数的函数作为子元素submit。该函数返回一个button带有onClick事件处理程序的元素submit
当按钮被点击时,它会触发组件submit提供的函数Form来处理表单提交逻辑。

HouseFormMobX React Form 的比较

HouseForm MobX React 表单
成分 HouseForm 使用不受控制的组件 不受控制与受控
API 灵活的 API 它提供了一组可用于构建表单的组件,包括<Form><Field>和。<Errors>
包装尺寸 HouseForm 文件大小为 13.5kb(未压缩,未使用 GZIP 压缩)。 压缩后 110.6 kB 和压缩后 + GZIPPED 28.7 kB
验证 HouseForm 使用 Zod 进行验证 可扩展验证插件。
学习曲线 良好的文档和示例,方便快速入门。 良好的文档和示例,方便快速入门。

结论

感谢阅读本文!希望它对你的编程之旅有所帮助。继续编程,享受编程的乐趣吧!

文章来源:https://dev.to/femi_akinyemi/top-10-react-form-libraries-for-efficient-form-creation-hp2