У меня возникли проблемы при попытке динамического изменения значения TextInput на основе другого ввода с использованием FormDataConsumer.
У меня есть ReferenceInput, который устанавливает AutocompleteInput с некоторыми параметрами, как показано ниже:
<ReferenceInput id="nome" label="Portaauto" source="Portaauto" name="Portaauto" reference="acl-pegaProtocolosConhecidos" alwaysOn >
<AutocompleteInput id="protocolo" name="Portaautoinput" source="protocolo" translateChoice={false} optionText="nome" />
</ReferenceInput>
Бэкэнд возвращает эту запись:
[{"id":"http","nome":"http(80)","porta":"80","protocolo":"tcp"},
{"id":"https","nome":"https(443)","porta":"443","protocolo":"tcp"},
{"id":"ntp","nome":"ntp(123)","porta":"123","protocolo":"udp"},
{"id":"dns","nome":"dns(53)","porta":"53","protocolo":"udp"},
{"id":"custom","nome":"custom(10-100)","porta":"10-100","protocolo":"gre"}]
Этот ввод работает как положено, но мне нужно изменить 2 других ввода, используя выбор пользователя.Итак, если пользователь выбирает «http», для одного ввода должно быть «80», а для другого - «tcp».
Я попытался просто изменить только один вход, но я могудаже не установить значение TextInput динамически, используя код ниже:
const getPortSugestion = (values) => {
console.log(values)
return values
};
<FormDataConsumer id="nome">
{({ formData, record, ...rest }) =>
<TextInput
name="city"
source={getPortSugestion(formData.Portaauto)}
value={getPortSugestion(formData.Portaauto)}
{...rest}
/>
}
</FormDataConsumer>
Используя этот код, «источник» изменяется (с «nome»), но «значение» не изменяется ...
Итак, как я могу изменить значение TextInput?
И как я могу получить доступ к другим атрибутам из моей записи, чтобы я мог изменять входные значения, используя другие поля из моей записи ('porta' и 'protocolo ')?
Кто-нибудь может помочь?Заранее спасибо.