react class组件form表单遇到的问题

1.表单确认按钮点击事件验证

handleSubmit = e => {
            e.preventDefault();
            this.props.form.validateFields((err, values) => {
                  if (!err) {
                        console.log('Received values of form: ', values);
                  }
            });
      };

报错 :Cannot read property 'validateFields' of undefined

解决办法:

class Home extends React.Component {
   .................
}

Home = Form.create({})(Home );  //加这行代码
export default Home ;

2.循环获得多个FormItem名称相同引起的问题

问题描述:

1.同名表单项的值共享,并且其中一个的值改变,另外的同名表单的值也一致改变
2.同名表单中,表单控件比如<Input />的onChange等事件会出现行为异常的情况
在这里插入图片描述
解决办法

<div>
	 <Form.Item label="名称">
	   {this.props.form.getFieldDecorator('name' + index)(  此处名称加索引
	     <Input />
	   )}
	 </Form.Item>
</div>
<div>
	 <Form.Item label="数值">
	   {this.props.form.getFieldDecorator('value' + index)(   //此处名称加索引
	     <Input onChange={() => { console.log('index:', index); }} />
	   )}
	 </Form.Item>
</div>

扩展反思

以上讨论的FormItem名称相同问题看似是个小问题,实际上很多情况如果不注意FormItem的名称唯一性,会造成很多问题,比如同名Item的值相互影响,以及以上所说的onChange行为异常(容易出错)。如果出现map渲染出多个表单时,可以利用名称+索引值使表单项名称唯一。
交流

1、QQ群:可添加qq群共同进阶学习: 进军全栈工程师疑难解 群号: 856402057
2、公众号:公众号「进军全栈攻城狮」

对前端技术保持学习爱好者欢迎关注公众号共同学习。在进阶的路上,共勉!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值