基于 Formily 和 Ant Design 的表单组件库,提供完整的表单解决方案。
npm install @flowform/components
# 或
yarn add @flowform/components
import { createForm } from '@formily/core';
import { FormProvider } from '@formily/react';
const form = createForm({
initialValues: {
name: '',
age: ''
}
});
import { Form, FormItem, Input } from '@flowform/components';
const MyForm = () => {
return (
<FormProvider form={form}>
<Form>
<FormItem label="姓名" name="name" required>
<Input placeholder="请输入姓名" />
</FormItem>
<FormItem label="年龄" name="age" required>
<Input placeholder="请输入年龄" />
</FormItem>
</Form>
</FormProvider>
);
};
在 Formily 中,useField()
返回 undefined
的主要原因:
❌ 错误用法:
<Input /> // 直接使用,没有 FormItem 包装
✅ 正确用法:
<FormItem name="fieldName">
<Input />
</FormItem>
❌ 错误用法:
<FormItem label="姓名">
<Input />
</FormItem>
✅ 正确用法:
<FormItem label="姓名" name="name">
<Input />
</FormItem>
❌ 错误用法:
<Form>
<Input /> {/* 直接放在 Form 下 */}
</Form>
✅ 正确用法:
<Form>
<FormItem name="name">
<Input />
</FormItem>
</Form>
使用 FieldDebug
组件来调试字段连接状态:
import { FieldDebug } from '@flowform/components';
<FormItem label="姓名" name="name">
<Input />
<FieldDebug name="name" />
</FormItem>
这会显示:
- 字段是否存在
- 字段路径
- 字段值
- 字段错误信息
-
Form
- 表单容器 -
FormItem
- 表单项包装器 -
Input
- 文本输入框 -
InputNumber
- 数字输入框 -
TextArea
- 多行文本输入框
-
Select
- 下拉选择器 -
Checkbox
- 单选框 -
CheckboxGroup
- 复选框组 -
Radio
- 单选按钮 -
RadioGroup
- 单选按钮组
-
DatePicker
- 日期选择器 -
Switch
- 开关 -
Upload
- 文件上传 -
FieldDebug
- 字段调试器
A: 确保组件被 FormItem 包装,且 FormItem 有 name 属性。
A: 使用 field.value
或通过表单实例的 values
属性。
A: 使用 field.setValue(value)
或表单实例的 setValues()
方法。
A: 使用 field.addPropertyListener()
或表单实例的 addPropertyListener()
方法。
查看 src/example/example.tsx
文件获取完整的使用示例。