首页 > 代码库 > react常见问题(二)

react常见问题(二)

本部分主要为表单相关。

1.表单form的react使用流程。

A.引入antd插件,声明FormItem

import {Form} from ‘antd‘;

const FormItem = Form.Item;

B.包装属性,使组件带有this.props.form属性

schoolEdit = Form.create({})(schoolEdit);

C.在render中声明要使用到的this.props.form带的api

const {getFieldDecorator} = this.props.form;

一个完整的表单:

<FormItem {...formItemLayout} label="详细地址:" hasFeedback >
        {getFieldDecorator(‘address‘, {rules: [{ required: true, message: ‘请输入详细地址1-100字符‘,type: "string",pattern: /^.{1,100}$/  }],})(<Input  placeholder="请输入详细地址"/>)}
</FormItem>

2.select选项showsearch属性实时匹配搜索。

3.如果rules里面的内容为空,会默认验证类型是否为string。

4.form里面嵌入form使用format时将会报错

5.select在表单加上默认值时应当为option的value值,常见加入选择全部如下:

<Option key={-1} value=http://www.mamicode.com/{null}>全部人员

6.同一页面不能有两个表单项名字一样,同一页面如果有多个表单,提交时验证混乱,全部将会一起提交。

解决办法,采用父子组件的形式,或者单独提交某些项。

7.时间项的必填等规则在rules里面无效,可以在formItem里面写required。

8.input组件若没有结尾符将会报错,若没有首字母大写则样式丢失。

9.若表单e.target。value来取值时报错,则采用传参数value来获取。

10.时间编辑时回显

const date=detail.take_time?moment(detail.take_time, ‘YYYY-MM-DD‘):null;
<FormItem {...formItemLayout} label="建校时间:" hasFeedback >
         {getFieldDecorator(‘schooltime‘, {initialValue:date, rules: [{type:"object"}], })(
               <DatePicker placeholder="请选择建校时间" style={{ width: ‘160px‘ }}/>
          )}
 </FormItem>            

11.设置必填可以rule里requore:true,也能直接在formItem设置required。

12.获取单个表单的值:var aa = this.props.form.getFieldValue(‘aa‘);

重置单个表单:this.props.form.resetFields(["aa",""]);

13.单选按钮里赋值不能采用大括号,要使用引号,select option赋值是大括号

<RadioGroup>

  <Radio value="http://www.mamicode.com/1">启用</Radio>

</RadioGroup>

14.表单中getFieldDecorator必须写上名字,不然报错

15.表单的验证规则写在rule内,带上类型验证

react常见问题(二)