【发布时间】:2017-06-26 10:17:28
【问题描述】:
我的 redux 表单作为道具接收如下列表类别:
[{"id": 1, "name_of_category": "foo"}, {"id": 2, "name_of_category": "bar"}]
使用 redux 表单网站上的 this example,我成功地将多选 React Widget 内置到我的表单中,因此用户可以选择“foo”或“bar”或两者。我的表单还成功返回了所选类别的名称列表,即表单提交时的["foo", "bar"]。
一切都很好,但为了让后端的生活更轻松,我想返回所选类别的 id 列表而不是名称列表。
对此我能做些什么?我是否需要引入一个额外的功能来完成这项工作?或者,React Widget 包中有内置功能?
这是我的 redux 表单的代码 sn-p:
import React from 'react';
import Multiselect from 'react-widgets/lib/Multiselect'
import { Field, reduxForm } from 'redux-form';
import { Form, Button } from 'reactstrap';
import 'react-widgets/dist/css/react-widgets.css'
const required = value => value ? undefined : 'Required';
const renderMultiselect = ({ input, data, valueField, textField }) =>
let categories = [];
data.map(category => categories.push(category.name));
return (
<Multiselect {...input}
onBlur={() => input.onBlur()}
value={input.value || []}
data={categories}
valueField={valueField}
textField={textField}
/>
)
};
const MyForm = (props) => {
const { handleSubmit, submitting, onSubmit, categories } = props;
return (
<Form name="myform" onSubmit={handleSubmit(onSubmit)}>
<div>
<label>Categories</label>
<Field
name="categories"
component={renderMultiselect}
data={categories} />
</div>
<Button color="primary" type="submit" disabled={submitting}>
Submit
</Button>
</Form>
);
};
export default reduxForm({
form: 'myform',
enableReinitialize: true
})(MyForm);
【问题讨论】:
标签: reactjs redux-form