react 地区筛选_Ant Design of React 之 Table 的自定义筛选

本文档介绍了如何在 Ant Design 的 Table 组件中实现自定义地区筛选功能。通过配置 columns 中的 filterDropdown 属性,可以创建自定义筛选内容。文章提供了筛选项的状态管理代码,包括筛选选中、重置和确定事件的处理函数,以及列配置的详细说明,帮助读者理解如何在实际应用中实现交互式的地区筛选功能。
摘要由CSDN通过智能技术生成

文档地址:https://ant.design/components/table-cn/

在antd文档中有相关介绍可以发现筛选项的配置在表格的列配置(columns)中实现,相关文档如下

可以发现主要由filterDropdown属性画自定义内容,代码参考:

/**

* 筛选项

*/

const filterList=[

{ text: '1', value: '1',ischecked:true },

{ text: '2', value: '2', ischecked:true },

{ text: '3', value: '3' ,ischecked:true},

];

const [filterCon,setFilterCon] = useState(); // 确定筛选

const [filterIsChecked,setFilterIsChecked] = useState(filterList); // 筛选项

const [filtered,setFiltered] = useState(false); // 筛选项是否高亮

const [filterDropdownVisible,setFilterDropdownVisible] = useState(false); // 筛选项下拉

/**

* 筛选选中

* @param e

* @param text

*/

const handleChangeCheckbox = (e:any,text:any,index:any) => {

let newfilter:any=[...filterIsChecked];

newfilter[index].ischecked=e.target.checked;

setFilterIsChecked(newfilter);

}

/**

* 筛选重置事件

*/

const handleReset = () => {

let newfilter:any=[...filterIsChecked];

newfilter.forEach((item:any) => {

item.ischecked=true;

});

setFiltered(false);

setFilterIsChecked(newfilter);

setFilterCon([]);

}

/**

* 筛选确定事件

*/

const handleSearch = () => {

setFiltered(true);

let newfilter:any=[...filterIsChecked];

let checked:any = [];

newfilter.forEach((item:any) => {

if(item.ischecked){

checked.push(item.text);

}

});

setFilterCon(checked);

setFilterDropdownVisible(false);

}

//列配置项

{

title:'分类',

dataIndex:'indexCategory',

filterDropdown:() => (

{filterIsChecked.map((item:any,index:any) => //筛选项循环

handleChangeCheckbox(e,item.text,index)} checked={item.ischecked}>{item.text}

)}

onClick={() => handleReset()}

size="small"

>

重置

type="primary"

onClick={() => handleSearch()}

size="small"

>

确定

),

filterDropdownVisible:filterDropdownVisible,

filterIcon: () => ,

onFilterDropdownVisibleChange:(visible:any) => { //是否显示筛选框

if(visible){

setFilterDropdownVisible(true);

}else{

setFilterDropdownVisible(false);

}

}

},

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值