跳转到主文档

自定义输入相关类型定义

Input

输入类型结构,其类型定义为:

interface Input {
key: string;
name: string;
type: 'input' | 'radio' | 'checkbox';
options?: IOption[];
validate?: (value: any, data: Record<string, unknown>, extra?: Record<string, unknown>) => {
success: boolean;
error?: string;
} | Promise<{
success: boolean;
error?: string;
>
when?: (input: Record<string, any>, extra?: Record<string, any>) => Promise<boolean>
}

key

关键字,作为输入字段的 key,可在生成器插件生命周期中通过 input[key] 获取到用户输入。

name

展示名称。

type

输入类型,包含三种值:

  • input:直接输入类型。

  • radio:单选类型,需配合 options 使用。

  • checkbox:多选类型,需配合 options 使用。

options

单选和多选类型时选项,选项结构后续介绍。

validate

验证函数,当用户输入之后,可在该函数中对输入进行验证。其中:

  • value 为当前输入字段值

  • data 为当前表单的所有输入字段值

  • extra 为从 config 参数额外传入的参数

when

条件函数,用于控制问题是否展示,当该函数返回 true 时,问题展示。其中:

  • input 为当前表单的所有输入字段值

  • extra 为从 config 参数额外传入的参数

Option

option 为输入选项,当自定义 Input 类型为 radiocheckbox 时,需要该配置。

option 类型定义为:

interface IOption {
key: string;
name: string;
isDefault?: boolean; // 是否为默认值,存在多个,以第一个选项为主,当前默认选项正好不展示,将会取第一个展示的选项值
when?: (input: Record<string, any>, extra?: Record<string, any>) => Promise<boolean> // 问题可根据之前输入决定是否展示
}

key

关键字,option 选项的关键字,当选中该选项是,对应 input 的值为该字段值。

name

展示名称。

isDefault

是否为默认值,设置为 true 时,展示问题会默认选择该选项

when

条件函数,用于控制选项是否展示,当该函数返回 true 时,问题展示。其中:

  • input 为当前表单的所有输入字段值

  • extra 为从 config 参数额外传入的参数