| 181 | }, |
| 182 | |
| 183 | getFieldDecorator(name, fieldOption) { |
| 184 | const props = this.getFieldProps(name, fieldOption); |
| 185 | return fieldElem => { |
| 186 | // We should put field in record if it is rendered |
| 187 | this.renderFields[name] = true; |
| 188 | |
| 189 | const fieldMeta = this.fieldsStore.getFieldMeta(name); |
| 190 | const originalProps = fieldElem.props; |
| 191 | if (process.env.NODE_ENV !== 'production') { |
| 192 | const valuePropName = fieldMeta.valuePropName; |
| 193 | warning( |
| 194 | !(valuePropName in originalProps), |
| 195 | `\`getFieldDecorator\` will override \`${valuePropName}\`, ` + |
| 196 | `so please don't set \`${valuePropName}\` directly ` + |
| 197 | `and use \`setFieldsValue\` to set it.`, |
| 198 | ); |
| 199 | const defaultValuePropName = `default${valuePropName[0].toUpperCase()}${valuePropName.slice( |
| 200 | 1, |
| 201 | )}`; |
| 202 | warning( |
| 203 | !(defaultValuePropName in originalProps), |
| 204 | `\`${defaultValuePropName}\` is invalid ` + |
| 205 | `for \`getFieldDecorator\` will set \`${valuePropName}\`,` + |
| 206 | ` please use \`option.initialValue\` instead.`, |
| 207 | ); |
| 208 | } |
| 209 | fieldMeta.originalProps = originalProps; |
| 210 | fieldMeta.ref = fieldElem.ref; |
| 211 | const decoratedFieldElem = React.cloneElement(fieldElem, { |
| 212 | ...props, |
| 213 | ...this.fieldsStore.getFieldValuePropValue(fieldMeta), |
| 214 | }); |
| 215 | return supportRef(fieldElem) ? ( |
| 216 | decoratedFieldElem |
| 217 | ) : ( |
| 218 | <FieldElemWrapper name={name} form={this}> |
| 219 | {decoratedFieldElem} |
| 220 | </FieldElemWrapper> |
| 221 | ); |
| 222 | }; |
| 223 | }, |
| 224 | |
| 225 | getFieldProps(name, usersFieldOption = {}) { |
| 226 | if (!name) { |