为了防止继续摸鱼,只好写点东西吧,又不知写什么好,打开代码,第一个映入眼帘的就是如下代码:

this.props.form.getFieldDecorator("root",{initialValue:tranlist})

好吧,那就写有关Form表单验证问题。

getFieldDecorator

antd中有个Form表单,可以收集Form.Item中的元素,那么如何验证输入框或选择框或...符合要求呢?例如:

这就用到getFieldDecorator方法,此方法,可以用来接收两个参数,其中第一个参数"root"为表单的字段对象,相当于id的作用,是用户自定义的,用于识别控件的变量名;第二个参数是验证规则,返回的是一个方法,具体包括初始值、规则等,其他不是特别常用(个人觉得)。
可以参考antd官方文档中form表单的API,传送门如下:
https://ant.design/components/form-cn/#components-form-demo-validate-other
具体写法如下:

const { getFieldDecorator } = this.props.Form;

<FormItem {...formItemLayout} label={用例名称} hasFeedback>
    {getFieldDecorator('mlname', {
        rules: [{ 
        required: true, 
        message: “用例名称不能为空”, 
        whitespace: true 
        }],
    })(
        <Input type="text" placeholder=“请填写用例名称” />
    )}
</FormItem>

敲黑板!敲黑板!敲黑板!
如果还是报了getFieldDecorator未定义这个错误,那你就慢慢查怎么修改吧。哈哈哈哈哈哈,开个玩笑,如果这样:

TypeError: Cannot read property 'getFieldDecorator' of undefined

那就说明你还没有在export暴露接口处添加:

export default Form.create()(FormLogin)

这是因为,我们使用过Form.create()这个方法创建了有getFieldDecorator这个功能的表单,这个问题,层一度困扰我好久,就是因为看官方文档不仔细。都给我逼到想看Form表单相关源码的冲动。还好在网上查到了解决方案。老天保佑。

getFieldValue和setFieldValue

这其实还是很简单的,没什么需要注意的,就是前者是得到表单值,后者,将表单中的值进行赋值。具体:
getFieldsValue:获取一组输入控件的值,如不传入参数,则获取全部组件的值;
getFieldValue:获取一个输入控件的值;
setFieldsValue:设置一组输入控件的值;
写法:

const roots = getFieldValue("roots");
form.setFieldsValue({ roots: nextVal });

这里需要注意的是:getFieldValue不能获取没有使用getFieldDecorator绑定的控件。