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

Ant Design Table 筛选器如何限制最多同时选中1个选项

实现方案

场景1:单列筛选选项仅支持单选(即你举例的性别筛选场景,同个筛选器内最多选1项)

Ant Design Table 原生提供了对应配置项,无需额外编写自定义逻辑,只需在对应列的配置中添加 filterMultiple: false 即可。该属性默认值为true(允许多选),设为false后筛选器会自动切换为单选模式,无法同时选中多个选项。
修改后的配置代码如下:

{
  title: 'Gender',
  dataIndex: 'gender',
  filters: [
    { text: 'Male', value: 'male' },
    { text: 'Female', value: 'female' },
  ],
  filterMultiple: false, // 新增这一行即可实现单选
  width: '20%',
}

场景2:整个Table所有列最多同时只有1个筛选条件处于激活状态

如果你需要的是跨列的筛选限制,即每次只能给任意一列设置筛选,不能同时给多列启用筛选,可通过监听Table的onChange事件手动控制筛选状态:

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

const YourComponent = () => {
  // 存储当前生效的筛选条件
  const [curFilters, setCurFilters] = useState({});

  const handleTableChange = (pagination, newFilters, sorter) => {
    // 找出所有已激活的筛选列
    const activeFilterKeys = Object.keys(newFilters).filter(key => newFilters[key]?.length);
    // 激活的筛选列超过1个时,仅保留最新触发的筛选,其余重置
    if (activeFilterKeys.length > 1) {
      const newActiveKey = activeFilterKeys.find(key => !curFilters[key]?.length);
      const limitedFilters = Object.fromEntries(
        Object.keys(newFilters).map(k => [k, k === newActiveKey ? newFilters[k] : []])
      );
      setCurFilters(limitedFilters);
      // 此处使用limitedFilters执行你的筛选逻辑
      return;
    }
    setCurFilters(newFilters);
    // 此处使用newFilters执行你的筛选逻辑
  }

  return <Table
    columns={你的列配置}
    dataSource={你的数据源}
    onChange={handleTableChange}
    filters={curFilters}
  />
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:24:04