一、分布表单StepsForm
StepsForm 通过 Provider 来管理子表单的数据,每个子表单都是完整的数据,在 StepsForm 组合成最后的数据。同时自带了一个进度条,和管理进度条的相关 API。
二、创建分布表单
应用submitter 中的render函数,自定义分布表单按钮,
render: (props) => {
console.log('props:', props)
if (props.step === 0) {
return (
<Button type="primary" onClick={() => props.onSubmit?.()}>
去第二步 {'>'}
</Button>
);
}
if (props.step === 1) {
return [
<Button key="pre" onClick={() => props.onPre?.()}>
返回第一步
</Button>,
<Button type="primary" key="goToTree" onClick={() => props.onSubmit?.()}>
去第三步 {'>'}
</Button>,
];
}
return [
<Button key="gotoTwo" onClick={() => props.onPre?.()}>
{'<'} 返回第二步
</Button>,
<Button type="primary" key="goToTree" onClick={() => props.onSubmit?.()}>
提交 √
</Button>,
];
},
源码展示如下:
import {
PageContainer,
FooterToolbar,
ProForm,
ProFormSelect,
ProFormText,
ProFormDependency,
StepsForm,
ProFormCheckbox
} from '@ant-design/pro-components';
import { Card, Form, Button, message } from 'antd';
import React, { useEffect, useState } from 'react';
const StepForm = () => {
return <PageContainer>
<StepsForm
onFinish={(val) => {
console.log('val:', val)
message.success('提交成功')
//如果有返回值为true,点击最后一步的提交按钮之后,则返回至第一步
return true
}}
submitter={{
render: (props) => {
console.log('props:', props)
if (props.step === 0) {
return (
<Button type="primary" onClick={() => props.onSubmit?.()}>
去第二步 {'>'}
</Button>
);
}
if (props.step === 1) {
return [
<Button key="pre" onClick={() => props.onPre?.()}>
返回第一步
</Button>,
<Button type="primary" key="goToTree" onClick={() => props.onSubmit?.()}>
去第三步 {'>'}
</Button>,
];
}
return [
<Button key="gotoTwo" onClick={() => props.onPre?.()}>
{'<'} 返回第二步
</Button>,
<Button type="primary" key="goToTree" onClick={() => props.onSubmit?.()}>
提交 √
</Button>,
];
},
}}
>
<StepsForm.StepForm title='创建实验'>
<ProFormText
name="name"
label="实验名称"
width="md"
tooltip="最长为 24 位,用于标定的唯一 id"
placeholder="请输入名称"
rules={[{ required: true }]}
/>
</StepsForm.StepForm>
<StepsForm.StepForm title='设置参数'>
<ProFormCheckbox.Group
name="checkbox"
label="部署单元"
rules={[
{
required: true,
},
]}
options={['部署单元1', '部署单元2', '部署单元3']}
/>
</StepsForm.StepForm>
<StepsForm.StepForm title='发布实验' onFinish={(value) => {
console.log('提交数据:', value)
}}>
<ProFormSelect
label="Pod 调度策略"
name="remark2"
initialValue="2"
options={[
{
value: '1',
label: '策略一',
},
{ value: '2', label: '策略二' },
]}
/>
</StepsForm.StepForm>
</StepsForm>
</PageContainer>
}
export default StepForm
三、运行效果
运行效果如下图所示:
图一 创建实验步骤
图二 设置参数步骤
图三 发布实验步骤