Redux 形式自定义 select 不使用第一个值

Redux-form custom select not using first value

我正在为我的新项目使用 react-redux 和 redux-form。当我创建自定义 select 字段时,它从不将第一个选项值(已经是 "selected")传递给 handleSubmit 函数。只有当我手动 select avalue 时,它​​才能正确传递选项值。

自定义 select:

const Select = ({ input, options, disabled }) => (
  <div>
    <select {...input} disabled={disabled}>
      { options.map(option =>
        <option key={option.value} value={option.value}>
          {option.label}
        </option>
      )}
    </select>
  </div>
);

表单组件:

function RegisterForm({ handleSubmit, titles }) {
  return (
    <form onSubmit={handleSubmit}>
      <label htmlFor="title">Title</label>
      <Field name="title" options={titles} component={Select} />

      <button type="submit">Submit</button>
    </form>
  );
}

RegisterForm.propTypes = {
  handleSubmit: PropTypes.func.isRequired,
  titles: PropTypes.array.isRequired,
};

export default reduxForm({
  form: 'register'
})(RegisterForm);

我必须从 redux 状态初始化 select 吗?或者有没有其他方法强制第一个值是初始值?

提前致谢!

初始化表单的方法有多种。

  1. 使用redux-form提供的initializeForm函数,通过props传递:
componentWillMount () {
  this.props.initialize({
    title: 'Codifly'
  });
}

请参阅文档:http://redux-form.com/6.4.3/docs/api/ActionCreators.md/

  1. 使用 initialValues 传递默认值:
export default reduxForm({
  form: 'register',
  initialValues: {
    title: 'Codifly'
  }
})(RegisterForm);

http://redux-form.com/6.4.3/docs/api/Props.md/

希望对您有所帮助!