SuperAPI AI 工具集

formily core fundamentals

前端与建站

查看项目

更新于 10-16 06:26

技能介绍

Formily Core Fundamentals 是一个用于学习 Formily 的入门技能,主要面向希望在 React 中使用 Formily 作为表单解决方案的开发者。其重点在于理解核心概念、搭建 Formily 项目,以及使用 TypeScript 实现基础表单。

用途 该技能适用于用户提出“学习 Formily 基础”“搭建 Formily”“Formily 核心概念”“Formily 入门”等需求时,提供使用 Formily 作为 React 表单解决方案的基础指导。

主要能力 Formily 被描述为一个高性能、灵活且可扩展的 React 表单解决方案,提供以下能力:

  • Schema 驱动表单:通过 JSON schema 定义表单。
  • 基于路径的值管理:通过路径字符串访问嵌套表单值。
  • 强大的校验:内置校验并支持自定义规则。
  • 细粒度响应式:高效更新并尽量减少重渲染。
  • TypeScript 支持:为表单和校验提供完整类型安全。

安装与搭建 安装核心 Formily 包: npm install @formily/core @formily/react @formily/validate

如需 TypeScript 支持,安装类型: npm install -D @types/react @types/react-dom

基础表单实现 技能以创建一个简单联系表单为例说明 Formily 基础:

  1. 定义表单 Schema:使用 createForm 并传入 initialValues。
  2. 将表单连接到 React:使用 FormProvider 包裹表单字段。
  3. 创建表单字段:使用 Field 组件,通过渲染函数获取 field 与 state,绑定 value 与 onChange。

表单状态管理 通过表单实例管理表单状态:

  • 访问表单值:form.values 获取全部值,form.values.name 获取特定字段值,form.values.contact.address 获取嵌套值。
  • 设置表单值:form.setValues 可设置单个、多个或嵌套字段值,例如 form.setValues({ 'user.profile.name': 'John Doe' })。

字段状态管理

  • 访问字段状态:通过 form.query('name') 获取字段,读取 field.value、field.errors、field.touched。
  • 修改字段状态:使用 form.setFieldState('name', state => { ... }) 修改 value、errors 等。

校验基础 Formily 提供内置校验能力:

  • Schema 校验:在 schema 中通过 required、format、x-validator 等定义校验规则,例如必填、最小长度、邮箱格式。
  • 自定义校验规则:通过 effects 中的 onFieldChange 监听字段变化并手动设置 field.errors,例如确认密码一致性校验。

表单提交 提交时先调用 await form.validate() 校验整个表单,然后读取 form.values,必要时调用 form.reset() 重置表单;校验失败时捕获错误。

TypeScript 集成

  • 定义表单类型:通过 interface 定义表单结构,并使用 createForm<ContactForm> 创建带类型的表单。
  • 类型安全的字段组件:为字段组件定义 props 接口,结合 Field 使用。

常见模式

  • 条件字段:通过 onFieldChange 监听某字段值,使用 form.setFieldState 控制其他字段的 visible 与 value。
  • 动态字段数组:使用 form.pushValues、form.removeValues、form.insertValues 操作数组字段。

性能优化

  • 减少重渲染:使用 @formily/reactive-react 的 observer 包裹性能关键组件。
  • 批量更新:使用 form.batch(() => { ... }) 批量执行多次状态更新。

错误处理

  • 全局错误处理:在 effects 中使用 onError 处理表单级错误。
  • 字段级错误处理:使用 onFieldError 针对特定字段的错误做自定义 UI 处理。

附加资源 技能包含参考文件与示例文件:

  • references/types-cheatsheet.md:常见 TypeScript 类型与接口。
  • references/validation-rules.md:内置校验规则参考。
  • examples/simple-contact-form.tsx:完整可运行的联系表单示例。
  • examples/field-components.tsx:可复用字段组件模式。

常见 Formily 模式与最佳实践

  • 使用 form.submit() 进行带校验的表单提交。
  • 使用 form.reset() 清除表单状态。
  • 使用 form.setFieldState() 进行细粒度字段控制。
  • 通过 x-validator 或 effects 实现自定义校验器。
  • 始终为表单 schema 定义 TypeScript 接口。
  • 尽可能使用 schema 校验而非手动校验。
  • 对性能关键组件使用 observer。
  • 在表单和字段两个层面优雅处理错误。
  • 对多次状态更新使用批量操作。
  • 创建可复用字段组件以减少代码重复。
  • 使用边界情况和错误场景充分测试校验。

限制 资料未提供该技能的具体收费、价格、支持平台、实际效果或完整使用步骤等事实,相关内容暂未提供。