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

如何限制Ant Design AutoComplete组件的下拉匹配结果展示数量

实现方案

Ant Design的AutoComplete组件未内置展示条数限制配置,可通过手动过滤匹配结果并截取前5条的方式实现需求,改动量很小,不影响原有匹配逻辑。

完整可运行代码

import { useState } from 'react';
import { AutoComplete } from 'antd';

// 全量原始数据集
const allOptions = [
  { value: 'Test 1' },
  { value: 'Test 2' },
  { value: 'Test 3' },
  { value: 'Test 4' },
  { value: 'Test 5' },
  { value: 'Test 6' },
  { value: 'Test 7' },
  { value: 'Test 8' },
  { value: 'Test 9' },
  { value: 'Test 10' }
];

const Complete = () => {
  // 维护实际传给组件的下拉选项
  const [options, setOptions] = useState(allOptions.slice(0, 5));

  const handleSearch = (inputValue) => {
    // 输入为空时默认返回前5条,可根据需求调整为空数组
    if (!inputValue) {
      setOptions(allOptions.slice(0, 5));
      return;
    }
    // 按原有规则过滤匹配项
    const matchedList = allOptions.filter(option => 
      option.value.toUpperCase().includes(inputValue.toUpperCase())
    );
    // 仅保留前5条匹配结果
    setOptions(matchedList.slice(0, 5));
  };

  return (
    <AutoComplete
      style={{ width: 200 }}
      options={options}
      placeholder="try to type `t`"
      onSearch={handleSearch}
      // 关闭组件自带过滤,避免重复处理
      filterOption={false}
    />
  );
};

ReactDOM.render(<Complete />, mountNode);

注意事项

  • 必须显式设置filterOption={false},否则组件会在你过滤后的结果上二次过滤,导致逻辑异常
  • 匹配规则和你原有逻辑完全一致,仅新增了结果截取逻辑,不会影响原有匹配效果
  • 如果你的数据是异步从接口获取,只需把allOptions替换为接口返回的全量数据集即可,其余逻辑无需调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:06:02