【发布时间】:2019-10-27 10:23:05
【问题描述】:
我正在将我使用SUIR 制作的一些表单移植到Formik 实现中。我有需要自定义更改处理程序来执行操作的输入组件。如何将我的更改处理程序传递给 onChange 属性,以便 formik 跟踪这些值?
我尝试过这样的事情,但没有运气。
onChange={e => setFieldValue(dataSchemaName, e)}
在另一篇帖子here中提到。
还提到了here,但我无法让我的自定义更改处理程序很好地与 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>
我有一个sandbox 有这个问题
【问题讨论】:
-
所以你想在特定输入发生变化时采取一些行动,对吧?
-
我只想像使用普通表单输入组件一样使用更改处理程序
-
你不能通过 formik 做到这一点。最好不要使用 formik。
-
我不相信这是完全正确的。