Я не смог найти getOptionValue
в документах для реагирования-выбора, но вы всегда можете создать адаптер для реагирования-выбора. то есть создайте свой собственный компонент Select, который использует компонент Select реагировать внутренне. После этого становится возможным создать свой собственный getOptionValue
. Вы можете использовать это, чтобы убедиться, что значение является строкой.
import React from "react";
import Select from "react-select";
class MySelect extends React.Component {
getSelectValue() {
return this.props.options.find(
option => this.props.getOptionValue(option) === this.props.input.value
);
}
render() {
console.log("value", this.props.input.value);
return (
<Select
value={this.getSelectValue()}
onChange={option => {
this.props.input.onChange(this.props.getOptionValue(option));
}}
options={this.props.options}
/>
);
}
}
MySelect.defaultProps = {
getOptionValue: v => v
};
const MyForm = reduxForm({ form: "MyForm" })(
class extends React.PureComponent {
render() {
return (
<Field
name="myCoolSelect"
component={MySelect}
options={[
{ value: "chocolate", label: "Chocolate" },
{ value: "strawberry", label: "Strawberry" },
{ value: "vanilla", label: "Vanilla" }
]}
getOptionValue={option => option.value}
/>
);
}
}
);
Выше приведен базовый пример того, как заставить это работать. Возможно, вы захотите передать другие входные данные или мета-реквизиты, чтобы воспользоваться преимуществами других функций в форме редукса. например onBlur
, onFocus
и т. Д. Вы можете увидеть это в действии здесь: https://codesandbox.io/s/6wykjnv32n