在前端开发中,表单组件是不可或缺的一部分。而 @tacitknowledge/react-form 是一个基于 React 的表单组件库,提供了一系列强大的功能,包括表单验证、表单联动、数据格式化等等。本文将详细介绍如何使用这个 npm 包。
安装方式
可以通过 npm 安装:
npm install @tacitknowledge/react-form --save
或者 yarn 安装:
yarn add @tacitknowledge/react-form
使用方式
基本使用
在使用之前,需要先导入组件:
import { Form, Field } from '@tacitknowledge/react-form';
然后定义表单域:
<Field name="username" label="用户名" />
最后通过 Form 组件渲染表单即可:
<Form onSubmit={handleSubmit}> <Field name="username" label="用户名" /> <Field name="password" label="密码" type="password" /> <Button type="submit">提交</Button> </Form>
值绑定与验证
Field 组件可以通过 value
属性来绑定表单值,而且还可以通过 validators
属性来指定验证规则。下面的示例演示了如何绑定 username
和 password
两个表单域,并指定 required
与 minLength
两个验证规则:
-- -------------------- ---- ------- ----- ------------------------ ------ --------------- ----------- ----------------------- ------------- ------- -- ------ -- ---------- ------- -- ------------ - - -- ---------- - ----- -- -- ------ --------------- ---------- --------------- ----------------------- ------------- ------- -- ------ -- --------- ------- -- ------------ - - -- --------- - ----- -- -- ------- ------------------------- -------
其中,values
是一个状态对象,用于存储所有表单域的值。当用户输入表单时,需要将表单值更新到 values
对象中。可以使用 useState 钩子来定义这个状态:
-- -------------------- ---- ------- ------ - -------- - ---- -------- -------- -------- - ----- -------- ---------- - ------------- ----- ------------ - ------- -- - ---------------------- -- -- -------------- -------------------- ------------------- ---- -- ----- ------------ - ------- -- - ----------------------- -- ---- ----- ------ - ---------------------- -- --------------------------- --- -- - -- --------------- - -- ------ - ----- ------------------------ ------ --------------- ----------- ----------------------- ------------- ------- -- ------ -- ---------- ------- -- ------------ - - -- ---------- - ----- -- ----------------------- -- ------ --------------- ---------- --------------- ----------------------- ------------- ------- -- ------ -- --------- ------- -- ------------ - - -- --------- - ----- -- ----------------------- -- ------- ------------------------- ------- -- -
高级用法
动态表单
@tacitknowledge/react-form 还支持动态表单,即表单域的数量不固定,可以根据用户输入的情况来动态添加或删除表单域。下面的示例演示了如何添加一个动态的电话号码列表:
-- -------------------- ---- ------- ------ - -------- - ---- -------- -------- ----------- - ----- -------- ---------- - ------------- ----- --------- - -- -- - ---------------------- -- - -------------- - --- --- ----------------- ------- -- -- --- -- ----- ------------ - ---- -- - ---------------------- -- --------------------- -- ---- --- ----- -- ----- ------------ - ------- --- -- - ---------------------- -- - ----- ----- - ------------------------ -- ---- --- ---- -- ------ -- -- - ------ - ---------------------- ------- - --- --- ------- ------------------ -- ------------------------- - --- -- - ---- - ------ ----------- - --- -- ----- ------------ - ------- -- - ----------------------- -- ---- ----- ------ - --------------- ------ --- -- --------------------------- --- -- - -- --------------- - -- ------ - ----- ------------------------ ------------------- -- - ------ -------------- ---------------------------- ------------ -------------- -------------------- ------------- ------- -- ------ -- ----------- ------- -- ----------------------- -- -------- -- ----- -- ----------------- -- ------------------- ---------- -- --- ------- ------------- -------------------- ------ --------- ------- ------------------------- ------- -- -
API 文档
<Form>
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
onSubmit | (values: object) => | - | 表单提交函数,参数为表单域的值对象 |
validate | (values: object) => | - | 表单验证函数,返回一个错误信息对象 |
initialValues | object | {} | 表单域的初始值对象 |
children | ReactNode | - | 表单域列表 |
style | CSSProperties object | - | 表单样式对象 |
className | string | - | 表单类名 |
enctype | string | - | 表单编码类型,同原生表单的 enctype 属性 |
<Field>
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
name | string | - | 表单域的名称,必须是字符串类型 |
label | string | ReactNode | - | 表单域的标签,可以是字符串或 React 组件 |
value | string | number | boolean | - | 表单域的值 |
validators | (value: any) => string | null | undefined[] | - | 表单域的验证规则,返回错误信息或错误信息列表 |
type | string | 'text' | 表单域的类型,同 HTML5 的 input 标签 |
placeholder | string | - | 表单域的占位符文本 |
onChange | (event: Event) => | - | 表单域值变化时的回调函数 |
onBlur | (event: Event) => | - | 表单域失去焦点时的回调函数 |
onFocus | (event: Event) => | - | 表单域获得焦点时的回调函数 |
style | CSSProperties object | - | 表单域样式对象 |
className | string | - | 表单域类名 |
总结
@tacitknowledge/react-form 是一个非常实用的表单组件库,它提供了丰富的功能,如表单验证、表单联动、数据格式化等等。开发者只需要简单配置,就可以快速和方便地实现复杂的表单操作。希望本文能够帮助读者更好地掌握 @tacitknowledge/react-form 的使用方法,提升开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60065f7d238a385564ab6a7f