Я портирую некоторые свои формы, созданные с помощью SUIR , на реализацию Formik .У меня есть компоненты ввода, которые нуждаются в пользовательских обработчиках изменений для выполнения действий.Как я могу передать свой обработчик изменений в onChange
реквизит, чтобы значения отслеживались formik?
Я пробовал что-то подобное, но безуспешно.
onChange={e => setFieldValue(dataSchemaName, e)}
, которыйупоминается в другом посте здесь .
Здесь также упоминается здесь , но я не совсем могу заставить свой обработчик пользовательских изменений красиво соединиться с Formik.
Мой обработчик изменений выглядит следующим образом
handleSchemaChange = (e, { value }) => {
this.setState({ dataSchemaName: value }, () => {
console.log("Chosen dataSchema ---> ", this.state.dataSchemaName);
//also send a request the selfUri of the selected dataSchema
});
const schema = this.state.dataschemas.find(schema => schema.name === value);
if (schema) {
axios
.get(schema.selfUri)
.then(response => {
console.log(response);
this.setState({
fields: response.data.data.fields,
});
console.log(this.state.fields);
})
.catch(error => console.log(error.response));
}
};
Вот пример одного из моих полей формы с использованием раскрывающегося списка
<Form.Field>
<label style={{ display: "block" }}>
Select a Schema
</label>
<Dropdown
id="dataSchemaName"
multiple={false}
options={dataschemas.map(schema => {
return {
key: schema.id,
text: schema.name,
value: schema.name
};
})}
value={dataSchemaName}
onChange={this.handleSchemaChange}
/>
</Form.Field>
У меня есть песочница с вопросом