设置value值错误
getFieldDecorator will override value
Warning: getFieldDecorator will override value, so please don’t set value directly and use setFieldsValue to set it
- 通过 getFieldDecorator 绑定的表单不能设置 value属性
- getFieldDecorator() 方法包装后的组件,会自动更新表单组件的value以及onChange事件
- 无需再手动添加value属性,删除组件中定义的 value
- 手动添加value属性才导致Warning的发生
- 填写初始默认值可使用initialValue进行设置 ```jsx // 错误的用法 {getFieldDecorator(‘name’, { initialValue: state.name, rules: [{ required: true, message: ‘请输入名称’ }], })()}
// 正确的用法
- 使用 Form.create()(App) 之后的component 会接收到一个props.form- 使用 **props.form**下的一系列方法,表单就具备自动校验功能的表单- 受控组件,能自动的绑定 value和 onChange<a name="FSRd2"></a>### 自定义组件SelectApp自定义组件内部不要用 PropTypes.defaultProps = {} 验证 value的值<br />通过解构赋值的方式,设置 默认值```jsximport React, { useEffect, useState, memo } from 'react';import PropTypes from 'prop-types';SelectApp.propTypes = {// value: PropTypes.oneOfType([PropTypes.number, PropTypes.object]);onChange: PropTypes.func,labelInValue: PropTypes.bool,allowClear: PropTypes.bool,};SelectApp.defaultProps = {// value: undefined,onChange: () => {},labelInValue: false,allowClear: false,};function SelectApp({value = undefined, onChange}) {return (<Select />)}
父组件调用
<Form.Item label="名称">{getFieldDecorator('name', {initialValue: state.id ? { key: value.id } : undefined,rules: [{ required: true, message: '请输入名称' }],})(<SelectApp labelInValue />)}</Form.Item>

