Сохранить входное значение для опции, выбранной в реакции выбора - PullRequest
0 голосов
/ 09 сентября 2018

Я использую реагировать-выбрать 2 в моем проекте. Каждый раз, когда пользователь выбирает параметр, входное значение очищается, что приводит к изменению списка параметров.
Есть ли способ сохранить введенное значение, чтобы пользователь мог выбрать несколько вариантов? вот что я попробовал:

<Select
    closeMenuOnSelect={false}
    blurInputOnSelect={false}
    isMulti
    loadOptions={this.resultProvider.bind(this)}
    inputValue={this.state.searchKey}
    onInputChange={this.handleInputChanged.bind(this)}
  />


handleInputChanged(input, reason) {
    if (reason.action === "set-value") {
        return;
    }
    this.setState({
        ...this.state,
        searchKey: input
    });
}

Я создал демо-версию для демонстрации этой проблемы: https://codesandbox.io/s/345rp0m041

Обратите внимание, что эта проблема возникает только при асинхронном выборе.

Спасибо за советы!

1 Ответ

0 голосов
/ 12 сентября 2018

Я думаю, вы довольно близки. Быстрый способ (хотя и не лучший) для решения этой проблемы состоит в добавлении еще двух проверок к методу handleInputChanged:

handleInputChanged(input, reason) {
    if (reason.action === "set-value" ||
        reason.action === "input-blur" ||
        reason.action === "menu-close") {
          return;
    }
    this.setState({
      ...this.state,
      searchKey: input
    });
  }

Вот рабочая демонстрация вашего кода: https://codesandbox.io/s/8n9mx057k0

Надеюсь, это поможет!

Примечание: в V1 ofact-select у нас была onSelectResetsInput опора, чтобы сохранить значение поля ввода, когда пользователь выбирает опцию. Но похоже, что он больше не доступен

...