• Antd的table组件自定义筛选菜单的使用


    table组件可以对每列设置筛选,也可以自定义筛选项,这里记录一下自己在一次开发中对自定义筛选项的使用

    table的自定义筛选,也就是大概如下的效果:

    1. // 自定义筛选无非就是自己放置一个input,可供用户输入
    2. // 再拿取到用户输入的值,进行后续的查询、过滤等操作
    3. // filterDropdown方法,提供setSelectedKeys、selectedKeys来实现input输入框在table组件中的受控
    4. // filterDropdown的更多属性可见这个链接,antd的官网也有该链接:https://github.com/ant-design/ant-design/blob/ecc54dda839619e921c0ace530408871f0281c2a/components/table/interface.tsx#L79
    5. // 如果你想在table外部也获取到input输入的值,可以使用 useRef 来实现
    6. // const searchInput = useRef(null);
    7. {
    8. title: 'Name',
    9. dataIndex: 'name',
    10. key: 'name',
    11. //filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters,close }) => {
    12. filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters }) => {
    13. return (
    14. <div style={{ padding: 8 }}>
    15. // 表单的受控是通过setSelectedKeys函数与selectedKeys来实现的,会把值透传到table的onChange事件中
    16. <Input
    17. //ref={searchInput}
    18. // placeholder={`Search ${dataIndex}`}
    19. value={selectedKeys[0]} //input输入框的取值
    20. // 当input输入框变化时调用setSelectedKeys来设置值实现受控
    21. onChange={e => setSelectedKeys(e.target.value ? [e.target.value] : [])}
    22. // onPressEnter={() => handleSearch(selectedKeys as string[], confirm, dataIndex)}
    23. style={{ marginBottom: 8, display: 'block' }}
    24. />
    25. <Space>
    26. <Button
    27. type="primary"
    28. // onClick={() => handleSearch(selectedKeys as string[], confirm, dataIndex)}
    29. // 当调用 confirm 设置closeDropdown为 true时
    30. // 会触发table的onChange事件,会在事件中拿到上面input中的值
    31. // 可以在onChange 事件中,走网络请求来实现远程的搜索
    32. onClick={() => confirm({ closeDropdown: true })}
    33. icon={<SearchOutlined />}
    34. size="small"
    35. style={{ width: 90 }}
    36. >
    37. 远程搜索
    38. Button>
    39. <Button
    40. onClick={() => clearFilters?.()}
    41. size="small"
    42. style={{ width: 90 }}
    43. >
    44. 清空
    45. Button>
    46. <Button
    47. type="link"
    48. size="small"
    49. onClick={() => {
    50. // confirm({ closeDropdown: false });
    51. // setSearchText((selectedKeys as string[])[0]);
    52. // setSearchedColumn(dataIndex);
    53. // 每一关闭筛选项会出发table的onChang事件,会在该事件中拿到上面input输入的值
    54. // 本地筛选,配合下面的 onFilter事件来完成
    55. // 在onFilter 事件回调中 根据用户输入的筛选条件,过滤掉之后,返回新的值给table
    56. confirm({ closeDropdown: true })
    57. }}
    58. >
    59. 本地筛选
    60. Button>
    61. <Button
    62. type="link"
    63. size="small"
    64. onClick={() => {
    65. // 注意这里,官网文档会解构出一个close方法用户关闭筛选项
    66. // 现在已经已经没有close 方法了 使用如下方法关闭
    67. // close();
    68. confirm({ closeDropdown: true })
    69. }}
    70. >
    71. 关闭
    72. Button>
    73. Space>
    74. div>
    75. )
    76. },
    77. // 本地模式下,确定筛选的运行函数 可以在这里进行本地数据的筛选
    78. onFilter: (value, record) =>
    79. record[dataIndex]
    80. .toString()
    81. .toLowerCase()
    82. .includes((value as string).toLowerCase()),
    83. // 自定义 filter 图标
    84. filterIcon: (filtered: boolean) => (
    85. <SearchOutlined style={{ color: filtered ? '#1890ff' : undefined }} />
    86. ),
    87. },

  • 相关阅读:
    键盘失灵按什么键恢复?详细方法分享!
    Python的Lambda函数: 一把极简编程的瑞士军刀
    聊聊流式数据湖Paimon(五)
    深入Linux:权限管理与常用命令详解
    登录获取token字符串
    day53
    【web-攻击验证机制】(3.3)验证机制执行缺陷:故障开放登录机制、多阶段登录机制中的缺陷、不安全的证书存储
    vSphere 架构设计方案(下)
    一文详解处理器缓存(缓存一致性、读写屏障、指令预取、false sharing)
    一文搞懂PKI/CA
  • 原文地址:https://blog.csdn.net/fsfsdgsdg/article/details/127824917