npm 包 form-material-ui 使用教程

阅读时长 21 分钟读完

在前端开发中,表单是经常使用的元素之一。为了优化开发效率和提高用户体验,现有很多成熟的表单库和组件。而其中一款比较优秀的表单库就是 form-material-ui。本文将详细讲解这个 npm 包的使用方法,并且结合示例代码进行说明。

为什么使用 form-material-ui?

  • Material UI 风格form-material-ui 样式风格遵循 Material UI 样式风格,使表单整体看起来更加美观易用。
  • 简单易用:使用 form-material-ui 调用组件非常简单,只需要几个配置项即可完成表单的构建,而且还支持自定义表单域。
  • 数据校验form-material-ui 支持多种数据校验规则,例如必填项,数字类型,手机号等。同时也支持自定义校验规则,能够满足各种表单数据校验需求。
  • 高度可扩展form-material-ui 支持高度自定义表单域,可以通过 React 组件来扩展原有的表单组件。同时也方便与其他第三方库和组件进行集成。

安装和使用

使用 npm 安装 form-material-ui

form-material-ui 支持以传入配置对象的方式创建表单,支持表单数据校验、提交数据等功能。

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

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

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

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

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

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

上面的例子中,我们使用 useState 定义 valuessetValues,其中 values 存储表单数据,setValues 用户更新表单数据。表单提交时,我们通过 console.log() 打印出表单数据。

这里我们仅仅使用了 TextFieldSubmitButton 很基础的两个组件,下面将会介绍更多组件。

组件列表

1. Form

Form 是表单的顶层组件,它将内部的表单域组件包含在内,并实现了相关的校验逻辑。Form 内部需要包裹至少一个表单域组件,否则自动抛出错误。同时还需要传入相关配置项。

属性

属性 描述 类型 是否必填 默认值 可选值
onSubmit 提交表单事件 function
initialValues 初始化表单数据 object {}
validate 表单校验规则 object {} validate.js 的校验规则或者自定义规则
validators 自定义表单校验规则 object {} 自定义表单校验规则,用法见 自定义表单校验规则

方法

方法 描述 参数 返回值
resetFields 重置表单 - void
validate 表单数据校验 - Promise<any>
getFieldValue 获取表单域值 field: string string or undefined
setFieldValue 设置表单域值 field: string, value: string void
setFieldsValue 设置多个表单域值 values: { [key in string]: string } void
setFieldsError 设置表单校验错误信息 errors: { [key in string]: string undefined }

2. TextField

TextField 组件是表单封装中常常使用的一个文本输入框组件,支持常用的表单校验属性。例如必填、最大值、最小值、正则表达式等。通过传入 name 属性决定输入框对应的 key 值,通过 onChange 执行数据更新操作。

属性

属性 描述 类型 是否必填 默认值 可选值
name 表单域名称 string
label 表单域标签 string
defaultValue 表单域默认值 string undefined
placeholder 表单域占位符文字 string ""
helperText 表单域帮助提示文字 string ""
required 表单域是否必填 boolean false
disabled 表单域是否禁用 boolean false
type 表单域类型 string "text" "text" / "password"
onChange 表单域值变化回调函数 function
validate 表单域校验规则 object/string "" 字符串表示预设的校验规则(object) 或自定义校验函数(string)
error 表单域校验信息,表示是否校验失败 boolean false
errorText 表单域校验失败时的提示信息 string ""
onEnterKeyDown 按下 enter 键的回调函数 function
debounceTimeout 输入延迟(ms),如果存在则会等待延迟之后再更新数据 number 0
InputProps 表单域底层组件属性 object
shrink 标签是否收缩 boolean false
fullWidth 宽度是否自适应父元素 boolean true
inputStyle 内部输入框样式 object {}
labelStyle 标题样式 object {}
helpTextStyle 帮助提示文字样式 object {}
errorTextStyle 表单域校验失败时的提示信息文字样式 object {}
preValidateValue 前置函数,用于转换输入框所输入的值 function

3. Checkbox

Checkbox 组件是一种常见的表单域类型,常常被用于表示用户是否同意协议、阅读条款等场景中。

属性

属性 描述 类型 是否必填 默认值 可选值
name 表单域名称 string
label 表单域标签 string
checked 表单域选中状态 boolean false
disabled 表单域是否禁用 boolean false
onChange 表单域值变化回调函数 function
fullWidth 宽度是否自适应父元素 boolean true
labelStyle 标题样式 object {}
checkboxStyle 内部的 checkbox 样式 CheckboxProps

4. Select

Select 组件可以实现下拉式选择效果,例如性别、出生年月、国家和地区等场景。

属性

属性 描述 类型 是否必填 默认值 可选值
name 表单域名称 string
label 表单域标签 string
defaultValue 表单域默认值 string
options 选项数组,用于构建下拉式菜单 array []
TextFieldProps 底层的文本输入框属性 object
onChange 表单域值变化回调函数 function
fullWidth 宽度是否自适应父元素 boolean true
labelStyle 标题样式 object {}
inputStyle 底层文本输入框样式 object {}
menuStyle 选项菜单样式 object {}
menuItemStyle 选项菜单项样式 object {}
menuItemSelectedStyle 被选中的选项菜单项样式 object {}
menuIconStyle 选项菜单图标样式 object {}

5. RadioGroup

RadioGroup 组件为类似于复选框组的枚举型组件,常常用于表示单选框选项,例如性别、新旧、定期存款等场景。

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

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

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

属性

属性 描述 类型 是否必填 默认值 可选值
name 表单域名称 string
label 表单域标签 string
defaultValue 默认选中值 string
value 当前选中值 string
onChange 表单域值变化回调函数 function
fullWidth 宽度是否自适应父元素 boolean true
labelStyle 标题样式 object {}
FormControlLabelProps 可选,控件默认属性 object {}
RadioGroupProps 可选,RadioGroup默认属性 object {}

6. DatePicker

DatePicker 常常用于用户填写日期,例如出生日期、预约日期等场景。

属性

属性 描述 类型 是否必填 默认值 可选值
name 表单域名称 string
label 表单域标签 string
format 日期格式 string "YYYY-MM-DD" "YYYY-MM-DD" / "YYYY/MM/DD" / "MM-DD-YYYY" / "MM/DD/YYYY"
value 当前选中日期值 Date
onChange 表单域值变化回调函数 function
fullWidth 宽度是否自适应父元素 boolean true
labelStyle 标题样式 object {}
inputStyle 内部输入框样式 object {}
DatePickerProps 底层组件属性 object {}

自定义表单校验规则

form-material-ui 支持自定义表单校验规则,可以通过传入字符串或者函数来自定义校验规则。

字符串规则

例如,下面的代码定义了一个名字必须为长度大于等于5的规则:

  • length: {is | minimum | maximum | equalTo: number}

除了 is 之外,三个校验规则均需要在大括号里面指定必填属性,例如:minimum: 3, maximum: 14, equalTo: 3

自定义函数

自定义函数的形式为:

自定义校验函数返回值有两种:

  • 返回一个字符串,表示校验失败,提供错误提示信息。
  • 返回任意非字符串类型值,表示校验成功。

自定义校验规则可以通过 validators 属性传入。

总结

本文介绍了

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

纠错
反馈