react中使用AntD表单

react中使用AntD表单

1.双向数据绑定

render() {
    const { getFieldDecorator } = this.props.form;//双向数据绑定
    return (
      <div>
        <Form >
          <FormItem label="姓名">
            {getFieldDecorator('userName')(
              <Input></Input>
            )}
          </FormItem>
        </Form>
      </div>
    );
 }
注意点
  • 直接使用会报错,需要使用Form.create(options)才能接受数据
    在js文件最后添加以下代码即可
form = Form.create({})(form);
export default form
  • 设置初始值的时候

不能在表单里直接使用value=,这样会报错:

Warning: getFieldDecorator will override value, so please don’t set value directly and use setFieldsValue to set it.

需要在getFieldDecorator中需要用initalValue来设置值

 <Form.Item key={i} >
            {getFieldDecorator(field,{
              initialValue:item.initLabel,//设置的默认值
            })(
              <Select
                style={{ width: '120' }}
                onChange={this.handleCurrencyChange}
              >
                {BaseUI.getOptionList(item.Options)}
              </Select>
            )}
</Form.Item>

2.获取表单数据

这里以form抽离为单独的组件userForm为例
我们在其他页面引入userForm组件

 <UserForm wrappedComponentRef={(form) => this.userForm = form}>
 </UserForm>

wrappedComponentRef相当于vue中的ref,这样this.userform就是这个dom节点

  • 获取数据
    this.userForm.props.form.getFieldsValue()
  • 重置数据
    this.userForm.props.resetFields()

更多请参考antd文档

3.表单验证

基础用法

<Form.Item key="author">
{getFieldDecorator("author", { rules: [{ required: true, message: '请输入作者!' }] })
(<Input placeholder="作者" allowClear />)}
</Form.Item>

自定义验证

checkPhone = (rule, value, callback) => {
    let reg = /^1(3|4|5|7|8)\d{9}$/;
    if (!value) {
      callback("请输入手机号")
    }
    else if (!reg.test(value)) { callback("请输入正确的手机号格式") }
    else {
      callback()
    }
}
...
<Form.Item key="phone">
{getFieldDecorator("phone", { rules: [{ validator: this.checkPhone }], })
(<Input placeholder="手机号" allowClear />)}
</Form.Item>

你可能感兴趣的:(react-Antd,react,antd,antd表单双向绑定)