npm 包 react-jsonschema-form-extras-ben 使用教程

阅读时长 10 分钟读完

介绍

在前端开发过程中,我们常常需要处理表单数据。JSON Schema 是一种描述数据格式的语言,可以用于定义和验证表单数据的格式,帮助我们更方便地处理数据。而 react-jsonschema-form-extras-ben 是一个基于 react-jsonschema-form 的扩展库,为我们提供了更多的组件和验证规则。

本文主要介绍如何使用 react-jsonschema-form-extras-ben 来创建表单和进行数据验证。本文假设你已经对 React 和 JSON Schema 有一定的了解。

安装和引入

使用 npm 安装 react-jsonschema-form 和 react-jsonschema-form-extras-ben:

在你的代码中引入:

使用

基本用法

要创建一个表单,我们需要先定义 JSON Schema 和 UI Schema。JSON Schema 描述了数据的格式和规则,UI Schema 描述了表单的显示方式。

下面是一个简单的例子:

-- -------------------- ---- -------
----- ------ - -
  ----- ---------
  ----------- -
    ----- - ----- -------- --
    ---- - ----- --------- --
    ------ - ----- --------- ------- ------- --
  --
  --------- -------- ------ ---------
--

----- -------- - -
  ----------- -------- ------ ---------
  ------------ -----------------
  ----- -
    ------------- -
      ------ -------
    --
  --
  ---- -
    ------------- -
      ------ ------
    --
  --
  ------ -
    ------------- -
      ------ --------
    --
  --
--

----- ------ - -- -- -
  ----- -------- - ---------- -- -
    ----------------------
  --
  ------ -
    -----
      ---------------
      -------------------
      -------------------
      ---------------
    --
  --
--

上面的例子定义了一个包含三个字段的表单,分别是姓名、年龄和电子邮件。其中姓名和年龄是必须填写的,电子邮件要求格式正确。

注意到我们在 Form 组件中传入了 addons。这是为了让 react-jsonschema-form-extras-ben 的组件和规则生效。下面介绍一些常用的组件和规则。

增强组件

react-jsonschema-form-extras-ben 提供了一些增强组件,让我们可以更方便地处理表单数据。常用的增强组件有:

DatePicker

DatePicker 是一个日期选择器,可以让用户选择日期并自动将日期格式化成我们想要的格式。使用 DatePicker,我们只需要将 JSON Schema 中的 type 设置为 "string",并用 "format" 指定日期格式。例如:

然后在 UI Schema 中使用 DatePicker 组件:

DatePicker 支持多种日期格式,并可以自定义日期格式。详见文档

ColorPicker

ColorPicker 是一个颜色选择器,可以让用户选择颜色。使用 ColorPicker,我们只需要将 JSON Schema 中的 type 设置为 "string",并用 "format" 指定颜色格式。例如:

然后在 UI Schema 中使用 ColorPicker 组件:

FileUploader

FileUploader 是一个文件上传器,可以让用户选择文件并上传。使用 FileUploader,我们只需要将 JSON Schema 中的 type 设置为 "string",并用 "format" 指定文件格式。例如:

然后在 UI Schema 中使用 FileUploader 组件:

FileUploader 还支持一些高级功能,如限制上传文件类型和大小、显示上传进度等。详见文档

数字输入框

react-jsonschema-form 自带的 NumberWidget 对用户体验不太友好,react-jsonschema-form-extras-ben 提供了更好用的数字输入框 SimpleNumberInputWidget、RangeInputWidget,可以取代默认的 NumberWidget。当然,它们的作用还不止于此。使用数字输入框,我们只需要将 JSON Schema 中的 type 设置为 "number",然后在 UI Schema 中使用 SimpleNumberInputWidget 或 RangeInputWidget 组件即可。例如:

-- -------------------- ---- -------
----- ------ - -
  ----- ---------
  ----------- -
    ---- - ----- -------- --
    ------ - ----- -------- --
  --
--

----- -------- - -
  ---- -
    ------------ ---------
  --
  ------ -
    ------------ --------
  --
--

其他组件

react-jsonschema-form-extras-ben 还提供了一些其他的组件,如 SelectPicker、MultiSelectPicker、MarkdownEditor、有赞风格的输入框、富文本编辑器等,详见官方文档

验证规则

JSON Schema 中可以定义各种各样的验证规则,react-jsonschema-form-extras-ben 进一步增加了一些自定义的验证规则。

相等性验证

有时候我们需要比较两个字段的值是否相等。比如说,我们要让用户确认密码时再次输入密码,并检查两个密码是否相等。可以使用 "equals" 验证规则:

-- -------------------- ---- -------
----- ------ - -
  ----- ---------
  ----------- -
    ---------- - ----- -------- --
    ---------- - ----- -------- --
  --
--

----- -------- - -
  ---------- -
    ------------ -----------
  --
  ---------- -
    ------------ -----------
    ----------- -
      -
        ------- --------
        ---------- - ----- - ---------- - ------ -------------- - - --
        -------- ------------
      --
    --
  --
--

上面的代码中,我们在密码确认输入框中加入了一个 "equals" 规则,它将判断当前输入框的值是否等于密码输入框的值。若不等,则显示错误提示信息。

这里的 "${password2}" 是一个特殊的占位符,它会被值为 password2 的字段的值替换。这样我们就可以在规则中引用其他字段的值了。

唯一性验证

有时候我们需要检查某个字段的值在数据库中是否已经存在。可以使用 "unique" 验证规则。"unique" 规则需要一个异步验证函数和一个错误提示消息:

-- -------------------- ---- -------
----- ------ - -
  ----- ---------
  ----------- -
    --------- - ----- -------- --
  --
--

----- -------- - -
  --------- -
    ----------- -
      -
        ------- --------
        ---------- ----- ---------- ------- -- -
          ----- ------ - ----- -----------------------------------------
          ------ - ------- ------ --
        --
        -------- -----------
      --
    --
  --
--

上面的代码中,我们在用户名输入框中加入了一个 "unique" 规则。它会调用一个异步的验证函数 checkIfUsernameExists,如果该函数返回 true,则显示错误提示信息。

其他验证规则

react-jsonschema-form-extras-ben 还提供了其他一些自定义的验证规则,如 "phone"(手机号码格式验证)、"ip"(IP 地址格式验证)、"url"(URL 格式验证)等,详见官方文档

结语

react-jsonschema-form-extras-ben 提供了一些便利的组件和自定义的验证规则,让我们更方便地处理表单数据。作者还在不断更新和完善这个库,建议大家多关注它的官方文档,以便获得最新的信息和帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6006737a890c4f7277584161

纠错
反馈