antD分布表单Demo

import React, { Component } from 'react';
import { Form, Input, InputNumber, Button, Steps  } from 'antd';
const { Step } = Steps;

@Form.create(Exer)
export default class Exer extends Component {
  state = { 
    currentStep: 0, // 当前的步骤
  }

  // 提交
  handleSubmit = e => {
    // 默认情况下提交时获得的err和values都是当前显示的表单项的内容,而且切换步骤之后原来表单项的值也没有了


    // 每一个表单项的getFieldDecorator加上preserve属性之后就可以获取所有渲染过的表单项(比如刚进入页面没有渲染过第二步的表单此时在第一步提交的时候不会有第二步表单的值(感觉不会影响逻辑的判断),如果已经进入过第二步又回到了第一步,此时在第一步表单提交时会有第二步表单的信息)的值,而且切换步骤之后原来表单项的值依然会保留
    e.preventDefault();
    this.props.form.validateFields(['name', 'age'], (err, values) => {// 此处只校验name、age,若 fieldNames 参数为空,则校验全部组件
      console.log(err, values);
    });
  }

  render() {
    const { getFieldDecorator } = this.props.form;
    const { currentStep } = this.state;
    return (
      
this.setState({ currentStep: current })}>
this.handleSubmit(e)}> {currentStep === 0 && {getFieldDecorator('name', { rules: [ { required: true, message: '请填写姓名' }, ], preserve: true, // 即便字段不再使用,也保留该字段的值(做分布表单的关键) })()} } {currentStep === 1 && {getFieldDecorator('age', { rules: [ { required: true, message: '请填写年龄' }, ], preserve: true, // 即便字段不再使用,也保留该字段的值(做分布表单的关键) })()} }
) } }

你可能感兴趣的:(antD分布表单Demo)