Ant Design 如何使用From表单验证

本文围绕Ant Design的Form表单展开,作者在项目中使用该表单时遇到报错问题,经努力成功排雷。文中指出若使用Form自带收集校验功能,需用Form.create()包装组件,用getFieldDecorator注册值,还点明未包装组件会报错这一常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ant Design之Form表单排雷

最近因为做项目需要做用一个Form表单,看了之后感觉真好,组件做的真好,简直完美,引了之后发现WHAT报错。经过努力终于排雷了,如果你也在用遇到了相同的问题希望这篇文章能够帮到你。
如果需要使用Form自带的收集校验功能,需要使用Form.create0包装组件,每一个需要收集的值还需要getFieldDecorator进行注册。如果你没有使用自动收集校验功能可以成功使用,如果有并且报了下边的错,接下来的文章会对你有帮助。
在这里插入图片描述
这个报错就是你没有使用Form.create0包装组件。

import { Form, Icon, Input, Button, Checkbox } from 'antd';

export default class Login extends React.Component {
	handleSubmit = e => {
		e.preventDefault();
		this.props.form.validateFields((err, values) => {
		  if (!err) {
			console.log('Received values of form: ', values);
		  }
		});
	  };
	
	  render() {
		const { getFieldDecorator } = this.props.form;
		return (

		  <Form onSubmit={this.handleSubmit} className="login-form">
			<Form.Item>
			  {getFieldDecorator('username', {
				rules: [{ required: true, message: 'Please input your username!' }],
			  })(
				<Input
				  prefix={<Icon type="user" style={{ color: 'rgba(0,0,0,.25)' }} />}
				  placeholder="Username"
				/>,
			  )}
			</Form.Item>
			<Form.Item>
			  {getFieldDecorator('password', {
				rules: [{ required: true, message: 'Please input your Password!' }],
			  })(
				<Input
				  prefix={<Icon type="lock" style={{ color: 'rgba(0,0,0,.25)' }} />}
				  type="password"
				  placeholder="Password"
				/>,
			  )}
			</Form.Item>
			<Form.Item>
			  {getFieldDecorator('remember', {
				valuePropName: 'checked',
				initialValue: true,
			  })(<Checkbox>Remember me</Checkbox>)}
			  <a className="login-form-forgot" href="">
				Forgot password
			  </a>
			  <Button type="primary" htmlType="submit" className="login-form-button">
				Log in
			  </Button>
			  Or <a href="">register now!</a>
			</Form.Item>
		  </Form>
		);
	  }
}
Login = Form.create({})(Login);

最后一行代码定义了Login=Form({})(Login)
在Ant Design官网上有这样一行解释,但是在繁杂冗余的API中你可能看不到这里就以为可以像别的组件一样使用了,这就是From的坑。
在这里插入图片描述
这样你就可以在getFieldDecorator()写你的验证规则了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值