Как установить значение по умолчанию в react-select

у меня проблема с использованием react-select. Я использую форму redux, и я сделал свой компонент react-select совместимым с формой redux. Вот код:

const MySelect = props => (
    <Select
        {...props}
        value={props.input.value}
        onChange={value => props.input.onChange(value)}
        onBlur={() => props.input.onBlur(props.input.value)}
        options={props.options}
        placeholder={props.placeholder}
        selectedValue={props.selectedValue}
      />
    );

и вот как я это представляю:

<div className="select-box__container">
                  <Field
                    id="side"
                    name="side"
                    component={SelectInput}
                    options={sideOptions}
                    clearable={false}
                    placeholder="Select Side"
                    selectedValue={label: 'Any', value: 'Any'}
                  />
                </div>

но проблема в том, что мой раскрывающийся список не имеет значения по умолчанию, как я хочу. Что я делаю не так? Есть идеи?

7 ответов


Я думаю, вам нужно что-то вроде этого:

const MySelect = props => (
<Select
    {...props}
    value={props.input.value?props.input.value:"Any"}
    onChange={value => props.input.onChange(value)}
    onBlur={() => props.input.onBlur(props.input.value)}
    options={props.options}
    placeholder={props.placeholder}
    selectedValue={props.selectedValue}
  />
);

у меня была аналогичная ошибка. Убедитесь, что параметры имеют значение атрибута.

<option key={index} value={item}> {item} </option>

затем сначала сопоставьте значение элемента selects со значением options.

<select 
    value={this.value} />

Я просто прошел через это сам и решил установить значение по умолчанию в функции init редуктора.

Если вы связываете свой выбор с redux, то лучше не "де-связывать" его со значением по умолчанию select, которое не представляет фактического значения, вместо этого установите значение при инициализации объекта.


я использовал параметр defaultValue, ниже приведен код, как я достиг значения по умолчанию, а также обновить значение по умолчанию, когда опция выбрана из раскрывающегося списка.

<Select
  name="form-dept-select"
  options={depts}
  defaultValue={{ label: "Select Dept", value: 0 }}
  onChange={e => {
              this.setState({
              department: e.label,
              deptId: e.value
              });
           }}
/>

если ваши варианты, как это

var options = [
  { value: 'one', label: 'One' },
  { value: 'two', label: 'Two' }
];

код {props.input.value} должен соответствовать одному из 'value' в своем {props.options}

смысл.props.input.value должно быть 'one' или 'two'


если вы пришли сюда для react-select v2 и все еще испытываете проблемы-версия 2 теперь принимает объект только как value, defaultValue, etc.

то есть, попробуйте использовать value={{value: 'one', label: 'One'}}, вместо value={'one'}.


Если вы не используете redux-form и используете локальное состояние для изменений, то ваш компонент react-select может выглядеть так:

class MySelect extends Component {

constructor() {
    super()
}

state = {
     selectedValue: 'default' // your default value goes here
}

render() {
  <Select
       ...
       value={this.state.selectedValue}
       ...
  />
)}