Параметры React Select Async не отображаются

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

searchGroups(searchString){
    if(!searchString) return Promise.resolve({ options: [] });
    UserGroups.getUserGroups(searchString).then((res) => {
      let groups = [];
      groups = res.groups.map((d) => ({
        value: d.group_ID,
        label: d.group_name
      }))
      return {options: groups};
    }, (e) => {
      this.setState({
        searchError: e.message
      })
    })
  }

Из того, что я вижу, массив groups (при поиске) возвращается как

[
    {value: 1, label: "Admins"}
    {value: 22, label: "Asset Group"}
    {value: 2, label: "Read-only"}
]

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

Вот как я реализую Select есть ли вариант, который мне не хватает? Я пробовал и valueKey, и labelKey, но ни один из них не работал у меня.

<Select.Async
      multi={true}
      onChange={this.onChange}
      loadOptions={this.searchGroups}
      value={this.state.value}
 />

Я уверен, что именно так я возвращаю данные, но не уверен, где это происходит не так и какое форматирование мне нужно исправить. Любая помощь будет принята с благодарностью.


person SamesJeabrook    schedule 26.03.2018    source источник
comment
Попробуйте return UserGroups.getUserGroups(...   -  person Oblosys    schedule 26.03.2018
comment
@Oblosys, я только что потерял на это 2 часа. Надо было просто отступить и еще раз взглянуть. Большое спасибо, что указали на этот очевидный недостаток. Можете ли вы сделать это ответом, чтобы я мог его принять?   -  person SamesJeabrook    schedule 26.03.2018


Ответы (1)


Проблема заключалась в отсутствии return перед UserGroups.getUserGroups(... Это привело к выполнению асинхронного кода и его отображению в сетевом журнале, но результаты не достигли Select.Async. Было бы неплохо, если бы react-select выдавало ошибку, если вызов loadOptions возвращает undefined, но в этом случае предполагается, что для предоставления результата будет использоваться обратный вызов.

person Oblosys    schedule 26.03.2018