import { Button } from 'antd'; import React, { useRef } from 'react'; import { XForm } from '../packages/react/src/index'; import { ISchema } from '../packages/types/src/index'; const schema: ISchema = [ { key: 'input1', type: 'Input', ui: { label: 'blur测试' }, rules: [ { type: 'email', message: 'blur测试', trigger: 'blur' } ] }, { key: 'input2', type: 'Input', ui: { label: 'change测试' }, rules: [ { type: 'email', message: 'change测试', trigger: 'change' } ] }, { key: 'input3', type: 'Input', ui: { label: 'submit测试' }, rules: [ { type: 'email', message: 'submit测试', trigger: 'submit' } ] }, { key: 'input4', type: 'Input', ui: { label: 'warning测试' }, rules: [ { type: 'email', message: 'warning测试', status: 'warning', trigger: 'change' } ] }, { key: 'array1', type: 'Array', ui: { label: '表单列表验证' }, children: [ { key: 'name', type: 'Input', ui: { label: '姓名' } }, { key: 'email', type: 'Input', ui: { label: 'Email' }, rules: [ { type: 'email', trigger: 'change' } ] }, { key: 'sex', type: 'Radio', ui: { label: '性别' }, options: [ { name: '男', value: 'male' }, { name: '女', value: 'female' } ] } ], rules: [ { type: 'array', required: true, defaultField: { type: 'object', fields: { name: {type: 'string', required: true}, email: {type: 'email', required: true}, sex: {type: 'string', required: true} } }, trigger: 'change' } ] }, { key: 'required1', type: 'Input', ui: { label: '必填样式测试', required: true, } }, { key: 'required2', type: 'Input', ui: { label: '必填功能测试' }, rules: [ { required: true, message: '该参数必填' } ] }, { key: 'function1', type: 'Input', ui: { label: '自定义校验测试' }, rules: [ { validator: (_: any, value: any) => { return !!value; }, message: '该参数必填' } ] }, { key: 'function2', type: 'Input', ui: { label: '异步自定义校验测试' }, rules: [ { asyncValidator: async (_: any, value: any) => { return new Promise((resolve, reject) => { setTimeout(() => { // 这个reject必须填个非false的值不然直接验证通过,好奇葩 !!value ? resolve(true) : reject(true); }, 5000); }); }, message: '该参数必填' } ] } ]; export default function() { const formRef = useRef(null); const onSubmit = () => { formRef.current.submit().then((data: any) => { console.log(data); }); }; const onReset = () => { formRef.current.reset(); }; const onEmpty = () => { formRef.current.empty(); }; return ( <>
); }