react ant design select 远程搜索,调用接口 显示 加载中,接口调用完毕,要是没有数据,显示暂无数据

javascript 复制代码
import { useState } from 'react';
import { Select, Spin } from 'antd';

const { Option } = Select;

const RemoteSearchSelect = () => {
  const [loading, setLoading] = useState(false);
  const [options, setOptions] = useState([]);

  const fetchData = async (value) => {
    setLoading(true);

    // 模拟调用接口获取数据
    try {
      const response = await fetch(`https://api.example.com/search?q=${value}`);
      const data = await response.json();

      if (data.length > 0) {
        setOptions(data);
      } else {
        setOptions([]);
      }
    } catch (error) {
      console.error('Error fetching data:', error);
    }

    setLoading(false);
  };

  const handleSearch = (value) => {
    // 远程搜索数据
    fetchData(value);
  };

  return (
    <Select
      showSearch
      onSearch={handleSearch}
      placeholder="搜索"
      notFoundContent={loading ? <Spin size="small" /> : options.length === 0 ? "暂无数据" : null}
    >
      {options.map((option) => (
        <Option key={option.value} value={option.value}>
          {option.label}
        </Option>
      ))}
    </Select>
  );
};

export default RemoteSearchSelect;
相关推荐
程序人生8887 小时前
几百张固定位置扫描件如何离线批量清?DocConverter Web 批量去水印链路
前端
deli0077 小时前
一个汉字三种编码:UTF-8、GBK、UTF-16 逐字节对比实测
前端
庖丁解牛7 小时前
第二课:把代码保存成网页 + 认识变量 (2)
前端
代码猎人7 小时前
怎么开发一个Vue3项目
前端
梦里寻码7 小时前
从 0 到 1 用 NestJS + LangChain 搭一套可售卖的 SaaS AI 客服:挂件一行代码接入,知识库秒变 SEO 帮助中心
前端·后端·github
爱喝水的小周7 小时前
实验十一 Vuex 实现王者荣耀后台比赛管理系统
前端·css·html
三十而立洋7 小时前
前端模块化的演进:从全局变量到 Import Maps
前端·javascript·前端工程化
橘猫走江湖7 小时前
浮动塌陷复现失败:父元素为什么一直不塌
前端·css
小凯在掘金7 小时前
一文搞懂 Map、Set、WeakMap、WeakSet
javascript·面试
用户1733598075377 小时前
纯前端 PDF 按书签拆分避坑指南:拆分后章节对不上?
前端·javascript·vue.js