将 React-Select 与 React-Final-Form 结合使用
Using React-Select with React-Final-Form
我在 React-Final Form 中使用 React-Select。当使用 React-Select 选择一个选项时,它会传递一个对象而不是单个值示例 {label: Foo, value: 100}
。我只需要将“值”传回服务器即可。在 Redux-Forms 中你可以做到 props.change()
,但这似乎不是这个 React-Final-Forms 的一个选项。我已经尝试编写 onChange 函数来存储状态中的东西,但是当我这样做时,React-Select 输入不再具有值。
表格
onSubmit = (data) => {
if (data.incidentNumber) {
//incident being
this.props.incidentActions.editincident(data);
} else {
//new incident is being created
this.props.incidentActions.createnewincident(data);
}
};
ReactSelectAdapter = ({ input, ...rest }) => (
<Select {...input} {...rest} searchable />
);
<Form
onSubmit={this.onSubmit}
render={({ handleSubmit, form, submitting, pristine, values }) => (
<form onSubmit={handleSubmit}>
<Row>
<Col>
<Label label="Water System" htmlFor="systemId" required />
<Field
name="systemId"
component={this.ReactSelectAdapter}
options={systems}
className="mb-2"
/>
</Col>
</Row>
.... more fields
提交的表格数据示例:
{
"systemId":{"label":"ACME WATERSYSTEM","value":577},
"description":"a water system"
}
如何让它只返回:
{
"systemId":577,
"description":"a water system"
}
您可以在 onSubmit
中进行一些转换以获得所需的格式。类似于:
onSubmit = (data) => {
data = {
...data,
systemId: data.systemId ? data.systemId.value : null,
};
if (data.incidentNumber) {
//incident being
this.props.incidentActions.editincident(data);
} else {
//new incident is being created
this.props.incidentActions.createnewincident(data);
}
};
我在 React-Final Form 中使用 React-Select。当使用 React-Select 选择一个选项时,它会传递一个对象而不是单个值示例 {label: Foo, value: 100}
。我只需要将“值”传回服务器即可。在 Redux-Forms 中你可以做到 props.change()
,但这似乎不是这个 React-Final-Forms 的一个选项。我已经尝试编写 onChange 函数来存储状态中的东西,但是当我这样做时,React-Select 输入不再具有值。
表格
onSubmit = (data) => {
if (data.incidentNumber) {
//incident being
this.props.incidentActions.editincident(data);
} else {
//new incident is being created
this.props.incidentActions.createnewincident(data);
}
};
ReactSelectAdapter = ({ input, ...rest }) => (
<Select {...input} {...rest} searchable />
);
<Form
onSubmit={this.onSubmit}
render={({ handleSubmit, form, submitting, pristine, values }) => (
<form onSubmit={handleSubmit}>
<Row>
<Col>
<Label label="Water System" htmlFor="systemId" required />
<Field
name="systemId"
component={this.ReactSelectAdapter}
options={systems}
className="mb-2"
/>
</Col>
</Row>
.... more fields
提交的表格数据示例:
{
"systemId":{"label":"ACME WATERSYSTEM","value":577},
"description":"a water system"
}
如何让它只返回:
{
"systemId":577,
"description":"a water system"
}
您可以在 onSubmit
中进行一些转换以获得所需的格式。类似于:
onSubmit = (data) => {
data = {
...data,
systemId: data.systemId ? data.systemId.value : null,
};
if (data.incidentNumber) {
//incident being
this.props.incidentActions.editincident(data);
} else {
//new incident is being created
this.props.incidentActions.createnewincident(data);
}
};