Reactjs 反应选择仅在表单中包含值,而不是值:'';和标签:'';

Reactjs 反应选择仅在表单中包含值,而不是值:'';和标签:'';,reactjs,redux-form,acts-as-taggable-on,react-select,Reactjs,Redux Form,Acts As Taggable On,React Select,我将react select包含在我的rails项目中,在redux表单中,除了提交表单的后端不喜欢{value,label},一切都很好 我希望我的表单字段只包含一个值列表 这是我的表格代码: export const renderTagsSelect = props => { const { input, initialValues } = props; return ( <Creatable {...props} value={input

我将
react select
包含在我的rails项目中,在
redux表单中
,除了提交表单的后端不喜欢
{value,label}
,一切都很好

我希望我的表单字段只包含一个值列表

这是我的表格代码:

export const renderTagsSelect = props => {
  const { input, initialValues } = props;
  return (
    <Creatable
      {...props}
      value={input.value || initialValues}
      resetValue={initialValues}
      onChange={value => input.onChange(value)}
      onBlur={() => input.onBlur(input.value)}
    />
  );
};

render() {
  <form onSubmit={handleSubmit(doSaveItem)}>
    <Title>Modifica Item</Title>
    <Field
      name="title"
      label="Titolo"
      component={renderInput}
      validate={required()}
    />
    <br />
    <span>Tags</span>
    <br />
    <TagsFormSelector name="tag_list" tags={item.tag_list} />
    <SubmitButton type="submit" disabled={pristine || submitting}>
      Salva modifiche
    </SubmitButton>
  </form>
}
我的后端是在rails中实现的,在上充当标记,更喜欢接收如下内容:

"tag_list: ["cena", "Paesaggi cittadini"]
对于未优化的情况,我更喜欢使用API的后端驱动器


如何做到这一点有什么线索吗

只需将函数引用传递给
onSubmit
属性,就可以在调用
handleSubmit
之前创建一个新函数来格式化数据:

  <form onSubmit={this.onSubmit}>

根据kuiro5的建议,我使用
normaliseData
函数将其固定在表单中:

表格中

     <form onSubmit={handleSubmit(doSaveItem)}>
        [..]
        <TagsFormSelector name="js_tag_list" tags={item.tag_list} />
        [..]
const doSaveItem = (data, dispatch, props) => {
  normaliseData(data);

  return dispatch(saveItem(props.item.id, data)).catch(response => {
    throw new SubmissionError(f.errorsFromProps(response));
  });
};
normaliseData

const normaliseData = data => {
  data["js_tag_list"] &&
    (data["tag_list"] = data["js_tag_list"].map(tag => tag.value));
以及其他数据规范化

这使它起了作用

const doSaveItem = (data, dispatch, props) => {
  normaliseData(data);

  return dispatch(saveItem(props.item.id, data)).catch(response => {
    throw new SubmissionError(f.errorsFromProps(response));
  });
};
const normaliseData = data => {
  data["js_tag_list"] &&
    (data["tag_list"] = data["js_tag_list"].map(tag => tag.value));