Вы теряете установленное значение, потому что onChange
для форм Antd имеют асин c и запускаются после написанного вами onChange
. Чтобы преодолеть это, вы можете просто добавить setTimeout
к setFieldsValue
:
onChange={e => {
const value = e.target.value;
const { setFieldsValue, getFieldValue } = this.props.form;
setTimeout(() => {
setFieldsValue({
drivers: `+1 - ${value}`
});
}, 0);
}}
Более прагматичный c способ сделать это - использовать normalize
функцию getFieldDecorator
:
{getFieldDecorator(`drivers`, {
initialValue: "",
normalize: (value) => {
return `+1 ${value}`;
}
})}
Однако это добавит +1
к каждому изменению, и это не будет похоже на то, что вы хотели бы сделать. Итак, альтернативно:
normalize: (value) => {
if(!value.startsWith('+1')) {
return `+1 ${value}`;
}
return value;
}
Codesandbox