You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-Select Async组件调用API筛选后下拉列表为空问题求解

核心问题

你混淆了React-Select普通组件和Async组件的使用逻辑:

  • Async组件不需要你手动维护options状态,也不需要额外传入options属性,它会自动读取loadOptions回调返回的选项数组完成渲染
  • 你当前的loadOptions没有返回处理后的选项列表,反而将结果存入了额外的state中,导致Async组件无法获取到要渲染的下拉数据
解决步骤
  1. 删除冗余代码
  • 移除自定义的listaValoriTrovati state和Async组件上的options={listaValoriTrovati}属性
  • 不需要额外绑定this,函数式组件里直接传loadOptions={getComuniNome}即可
  1. 修改getComuniNome函数,直接返回处理后的选项数组,不需要调用setState:
const getComuniNome = async (searchTerm) => {
  // 无搜索关键词时返回空数组,避免发起无效请求
  if (!searchTerm.trim()) return []
  const res = await axios.get(`${apiComuni}?comDes.contains=${searchTerm}`)
  // 直接返回处理好的value+label格式数组,Async组件会自动读取该结果渲染下拉列表
  return res.data.map(val => ({ value: val.comCod, label: val.comDes }))
}
  1. 修改后的Async组件代码如下:
<Async
  value={comCod}
  loadOptions={getComuniNome}
  onChange={onChangeComuni}
/>

你当前的选项已经是标准的value+label格式,注释的getOptionLabel和getOptionValue属性不需要开启,组件默认就能识别这两个字段。

排查补充

如果修改后仍有问题,可以按以下方向排查:

  • 给getComuniNome添加catch逻辑,确认接口请求没有报错,返回的数组中没有null/undefined项
  • 确认返回的每一项的label字段都有有效值,没有空字符串或者undefined的情况

内容的提问来源于stack exchange,提问作者Jack23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:06:06