Как сохранить состояние опций после потери фокуса на асинхронном выборе? - PullRequest
0 голосов
/ 05 июля 2019

При использовании компонента «act-select »у меня проблемы с состоянием опций. После события 'blur' параметры устанавливаются на значения по умолчанию, однако значение inputValue по-прежнему установлено. Как избежать сброса таких параметров?

"реагировать" 16.8.6 «реагировать на выбор» 2.4.2

Я предоставляю все реквизиты для компонентов в соответствии с документами https://react -select.com / props # async-props , включая loadOptions возвращение Promise, которое разрешается с помощью списка опций, defaultOptions как истина, cacheOptions как истина, inputValue из состояния моего компонента, onInputChange изменение состояния inputValue для действий, кроме 'input-blur' и 'menu-close'.

onInputChange = (inputValue, { action }) => {
  if (['input-blur', 'menu-close'].indexOf(action) === -1) {
    this.setState({ inputValue });
  }
};
loadOptions = input => {
  return getOptions(input)
};
<Async
  cacheOptions,
  defaultOptions,
  onInputChange={onInputChange}
  loadOptions={loadOptions}
  inputValue={inputValue}
>

Я ожидаю, что параметры после «фокуса» останутся такими же, как и до «размытия», но параметры будут установлены по умолчанию.

1 Ответ

0 голосов
/ 05 июля 2019

Документы, предоставленные для реквизита <Async> onChangeInput, не совсем верны.

function (
  string,
  {
    action required One of <
      "set-value",
      "input-change",
      "input-blur",
      "menu-close"
    >
  }
) => undefined

Не всегда undefined ожидается от функции.

При обработке изменения <Async> возвращает inputValue, возвращаемое из onInputChange. Возвращение inputValue из моего состояния решило проблему для меня.

...