简介:simple-form-js-component 是一个基于 React 的简单表单组件,使用起来非常方便。该组件包含了常用的表单元素,并且支持动态生成表单项。
安装
要使用 simple-form-js-component,你需要先在你的项目中安装它。可以使用 npm 或 yarn 来安装:
# 使用 npm 安装 npm install simple-form-js-component # 或者使用 yarn 安装 yarn add simple-form-js-component
安装完成后,在需要使用该组件的文件中引入它:
import SimpleForm from 'simple-form-js-component';
如何使用
使用 simple-form-js-component 构建表单非常简单。下面是一个基础的例子:
-- -------------------- ---- ------- ------ ----- ---- -------- ------ ---------- ---- --------------------------- ----- ------ - -- -- - ----- ---------- - - - ----- ------- ----- ----------- ------ ----- -- - ----- ----------- ----- ----------- ------ ---- -- -- ----- ------------ - ---------- -- - ------------------- ---------- -- ------ - ----------- ----------------------- ----------------------- -- -- -- ------ ------- -------
在上面的例子中,我们创建了一个包含两个表单项的表单,分别是用户名和密码,使用了 SimpleForm
组件,并在表单提交时输出了当前表单数据。
SimpleForm
组件接受两个必要 props:
formFields
,指定要渲染的表单项;onSubmit
,表单提交时的回调函数,接受表单数据作为参数。
下面我们来详细介绍 formFields
支持的各种类型表单项和相关 props。
表单项类型
Input
Input 类型可以渲染多种 HTML input 控件,包括:
text
password
email
number
url
date
time
month
week
datetime-local
search
下面是 Input 类型表单项的 props:
type
(必须):input 控件的类型,可选值有上述类型;name
(必须):input 控件的名字,用于在表单数据中标识该控件;label
(可选):input 控件的标题;placeholder
(可选):input 控件的占位符文本。
const formFields = [ { type: 'text', name: 'username', label: '用户名', placeholder: '请输入用户名' }, ];
Checkbox
Checkbox 类型可以渲染一个 checkbox 控件。
对应 props:
type
:固定为checkbox
;name
、label
、value
:同 HTML checkbox 控件的对应属性。
const formFields = [ { type: 'checkbox', name: 'agree', label: '我同意遵守协议', value: true }, ];
Radio
Radio 类型可以渲染多个 radio 控件。
对应 props:
type
:固定为radio
;name
、label
、options
:同 HTML radio 控件的对应属性;inline
(可选):是否将选项横向排列,默认为false
。
-- -------------------- ---- ------- ----- ---------- - - - ----- -------- ----- --------- ------ ----- -------- - - ------ ------- ------ --- -- - ------ --------- ------ --- -- -- ------- ----- -- --
Select
Select 类型可以渲染下拉选择框。
对应 props:
type
:固定为select
;name
、label
、options
:同 HTML select 控件的对应属性;multiple
(可选):是否支持多选,默认为false
。
-- -------------------- ---- ------- ----- ---------- - - - ----- --------- ----- ----------- ------ ------- -------- - - ------ ------------- ------ ------------ -- - ------ --------- ------ -------- -- - ------ ------- ------ ------ -- -- --------- ----- -- --
Textarea
Textarea 类型可以渲染一个多行输入框。
对应 props:
type
:固定为textarea
;name
、label
:同 HTML textarea 控件的对应属性;rows
、cols
(可选),分别为行数和列数。
const formFields = [ { type: 'textarea', name: 'comment', label: '评论', rows: 3 }, ];
Datepicker
Datepicker 类型可以渲染一个日期选择器。
对应 props:
type
:固定为datepicker
;name
、label
、format
:分别为控件名、标题和日期格式;defaultValue
(可选),控件的默认值;disabled
(可选),是否禁用控件。
-- -------------------- ---- ------- ----- ---------- - - - ----- ------------- ----- ----------- ------ ------- ------- ------------- ------------- ------------- --------- ----- -- --
Upload
Upload 类型可以渲染一个上传控件。
对应 props:
type
:固定为upload
;name
、label
:同 HTML file 控件的对应属性;action
(可选),上传接口地址;accept
(可选),支持上传的文件类型;headers
(可选),自定义 headers;data
(可选),自定义上传数据;onChange
(可选),上传成功后的回调函数。
-- -------------------- ---- ------- ----- ---------- - - - ----- --------- ----- --------- ------ ----- ------- ---------- ------- ----------------------- -------- - -------------- ------- ----- -- ----- - ------- -------- -- --------- ---------- -- - ------------------- ---------- -- -- --
动态表单项
如果你需要动态生成表单项,可以通过在 formFields
数组中添加一个函数,来实现动态表单项的生成:
const formFields = [ { type: 'text', name: 'username', label: '用户名' }, (formData) => ( // 根据 formData 动态生成表单项,返回一个表单项对象 // 该对象的属性同其它类型表单项的 props ), // ... ];
在表单提交时,simple-form-js-component 将自动过滤掉所有函数类型的表单项,不将其计入表单数据中。
总结
通过本文介绍,我们了解到了如何使用 npm 包 simple-form-js-component 来构建前端表单,以及该组件支持的各种表单项。在实际开发中,使用该组件能够极大地提高表单开发效率。如果你在表单开发中遇到了问题,欢迎在评论区留言,我们将竭力为您解答。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056cd981e8991b448e67fe