跳转到内容

表单使用

  • 如果您需要实现某种逻辑却没有头绪,欢迎提问

本文介绍表单的常用能力:值监听、布局移动、分区禁用、字段分组、验证、级联、懒加载等。

Valibot 类型如何映射为表单控件 / 表单组 / 表单数组,以及默认值与嵌套定义,统一见 类型映射 — 定义即表单,本文不再重复。

valueChangelist 属性接受一个路径或者 undefined,通过路径查询到对应控件并监听输入值变更:

更多联动场景(hideWhen / disableWhen / 级联 / 修改其他字段)见 动态字段控制

表单中往往是数据结构与视图布局不一致,此时可在保证数据结构正常的前提下移动组件。被移动的位置一定要先被解析,权重越大组件越靠后:

详细示例见 asControl / asVirtualGroup

当表单部分字段在某些场景可以/不可以被填写时,使用 disableWhen

任何情况下,都可以将指定类型定义外加入 v.array(),表明为一个数组:

数组的增删改、deletionMode、groupMode 等高级用法见 数组高级用法

v.intersect() + asVirtualGroup 可以进行多级虚拟组,配合 tabs 组件实现标签页分组:

使用 valueChange 监听控件并更新其他控件的值:

验证和控件组件完全解耦,需要自行实现,只提供相关控件状态。可以使用 wrapper 套一层实现,也可以使用 group 只在专门的组中进行验证:

同步/异步验证器、formConfig.validators 等详细用法见 自定义验证

通过 valueChange 监听指定控件并更新控件值。第一次监听的值默认为 undefined(假如没有设置默认值),所以需要跳过:

自定义创建表单组控制内部表单的显示(大量字段时可使用 filterGroup 过滤组件):

使用 defer 动态创建控件,配合 scrollGroup 组件实现大量字段的滚动懒加载: