返回

与众不同的rc-form v3 & v4

前端

前言

rc-form是一个React表单库,它提供了一系列表单控件和验证功能。rc-form v3和v4是两个主要版本,它们有一些不同的特性。

rc-form v3和v4的主要区别

  • 表单状态管理 :rc-form v3使用Redux来管理表单状态,而rc-form v4使用React的Context API来管理表单状态。
  • 验证 :rc-form v3使用validator.js来进行表单验证,而rc-form v4使用yup来进行表单验证。
  • 错误处理 :rc-form v3使用Form.create来处理表单错误,而rc-form v4使用useForm来处理表单错误。
  • API :rc-form v3和v4的API有很大不同,这使得在两个版本之间进行迁移可能会比较困难。

如何用手写代码在React项目中使用rc-form v3和v4

rc-form v3

import React, { Component } from 'react';
import { Form, Field } from 'rc-form';

class MyForm extends Component {
  render() {
    const { getFieldDecorator } = this.props.form;
    return (
      <Form>
        <Field name="username">
          <input type="text" placeholder="Username" />
        </Field>
        <Field name="password">
          <input type="password" placeholder="Password" />
        </Field>
        <button type="submit">Submit</button>
      </Form>
    );
  }
}

const WrappedMyForm = Form.create()(MyForm);

export default WrappedMyForm;

rc-form v4

import React, { useState } from 'react';
import { useForm } from 'rc-form';

const MyForm = () => {
  const [form] = useForm();

  const onFinish = (values) => {
    console.log('Received values of form: ', values);
  };

  return (
    <Form form={form} onFinish={onFinish}>
      <Form.Item name="username" label="Username">
        <Input />
      </Form.Item>
      <Form.Item name="password" label="Password">
        <Input.Password />
      </Form.Item>
      <Button type="primary" htmlType="submit">
        Submit
      </Button>
    </Form>
  );
};

export default MyForm;

rc-form v3和v4的对比

特性 rc-form v3 rc-form v4
表单状态管理 Redux React的Context API
验证 validator.js yup
错误处理 Form.create useForm
API 不同 不同
学习曲线 陡峭 平缓
文档 良好 良好
社区支持 庞大 庞大

结论

rc-form v3和v4都是优秀的表单库,它们各有优缺点。rc-form v3使用Redux来管理表单状态,而rc-form v4使用React的Context API来管理表单状态。rc-form v3使用validator.js来进行表单验证,而rc-form v4使用yup来进行表单验证。rc-form v3使用Form.create来处理表单错误,而rc-form v4使用useForm来处理表单错误。rc-form v3和v4的API有很大不同,这使得在两个版本之间进行迁移可能会比较困难。