之前使用antd的ui表单,却没发现这么好用的用法,推荐给大家
import React from "react"; import { Card, Form, Input, Button, message, Icon, Checkbox } from "antd"; const FormItem = Form.Item; class FormLogin extends React.Component{ handleSubmit = ()=>{ let userInfo = this.props.form.getFieldsValue(); this.props.form.validateFields((err,values)=>{ if(!err){ message.success(`${userInfo.userName}欢迎您 ,当前密码为:${userInfo.userPwd}`) } }) } render(){ const { getFieldDecorator } = this.props.form; return ( <div> <Card title="登录水平表单" style={{marginTop:10}}> <Form style={{width:300}}> <FormItem> { getFieldDecorator('userName',{ initialValue:'', rules:[ { required:true, message:'用户名不能为空' }, { min:5,max:10, message:'长度不在范围内' }, { pattern:new RegExp('^\\w+$','g'), message:'用户名必须为字母或者数字' } ] })( <Input prefix={<Icon type="user"/>} placeholder="请输入用户名" /> ) } </FormItem> <FormItem> { getFieldDecorator('userPwd', { initialValue: '', rules: [] })( <Input prefix={<Icon type="lock" />} type="password" placeholder="请输入密码" /> ) } </FormItem> <FormItem> { getFieldDecorator('remember', { valuePropName:'checked', initialValue: true })( <Checkbox>记住密码</Checkbox> ) } <a href="#" style={{float:'right'}}>忘记密码</a> </FormItem> <FormItem> <Button type="primary" onClick={this.handleSubmit}>登录</Button> </FormItem> </Form> </Card> </div> ); } } export default Form.create()(FormLogin);
使用getFieldDecorator ,因为是antd的form的属性,所以需要导出form组件,export default Form.create()(FormLogin);
效果:
可通过getFieldDecorator进行规则校验,并在点击登录按钮时校验
handleSubmit = ()=>{ let userInfo = this.props.form.getFieldsValue(); this.props.form.validateFields((err,values)=>{ if(!err){ message.success(`${userInfo.userName}欢迎您 ,当前密码为:${userInfo.userPwd}`) } }) }
获取表单信息,判断是否有err,有的话则显示
还有一点就是Checkbox初始化默认选中需要2个条件
valuePropName:'checked', initialValue: true