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

如何在Material React Table中为指定列单独设置筛选功能

问题

使用Material React Table时,点击“First Name”列的筛选选项后,“Id”、“Last Name”和“Full Name”列也都显示了筛选功能,如何仅为特定列开启筛选功能,其余列保持原有状态?

问题截图

用户代码示例:

import React, { useEffect, useState } from "react";
import MaterialReactTable from 'material-react-table';

function Table() {
  const [data, setData] = useState([]);

  const columns = [
    { header: "id", accessorKey: "id" },
    { header: "First Name", accessorKey: "FirstName" },
    { header: "Last Name", accessorKey: "LastName" },
    { header: "Full Name", accessorKey: "FullName" },
  ];
  useEffect(() => {
    fetch("http://localhost:3030/getAllData")
      .then((resp) => resp.json())
      .then((resp) => {
        setData(resp["data"]);
      });
  }, []);
  return (
    <div>
      <MaterialReactTable
        data={data}
        columns={columns}    
      />
    </div>
  );
}

export default Table;
解决方案

Material React Table默认给所有列开启筛选功能,要实现仅特定列可筛选,有两种可行方式:

方式一:全局关闭筛选,为指定列单独开启

在MaterialReactTable组件中设置enableColumnFilters={false}全局禁用筛选,再给需要开启筛选的列配置enableColumnFilter: true:

import React, { useEffect, useState } from "react";
import MaterialReactTable from 'material-react-table';

function Table() {
  const [data, setData] = useState([]);

  const columns = [
    { header: "id", accessorKey: "id" },
    { header: "First Name", accessorKey: "FirstName", enableColumnFilter: true }, //仅该列开启筛选
    { header: "Last Name", accessorKey: "LastName" },
    { header: "Full Name", accessorKey: "FullName" },
  ];
  useEffect(() => {
    fetch("http://localhost:3030/getAllData")
      .then((resp) => resp.json())
      .then((resp) => {
        setData(resp["data"]);
      });
  }, []);
  return (
    <div>
      <MaterialReactTable
        data={data}
        columns={columns}
        enableColumnFilters={false} //全局关闭筛选
      />
    </div>
  );
}

export default Table;

方式二:为不需要筛选的列单独关闭

保持全局筛选默认开启,给不需要筛选的列配置enableColumnFilter: false:

import React, { useEffect, useState } from "react";
import MaterialReactTable from 'material-react-table';

function Table() {
  const [data, setData] = useState([]);

  const columns = [
    { header: "id", accessorKey: "id", enableColumnFilter: false }, //关闭该列筛选
    { header: "First Name", accessorKey: "FirstName" }, //默认开启筛选
    { header: "Last Name", accessorKey: "LastName", enableColumnFilter: false }, //关闭该列筛选
    { header: "Full Name", accessorKey: "FullName", enableColumnFilter: false }, //关闭该列筛选
  ];
  useEffect(() => {
    fetch("http://localhost:3030/getAllData")
      .then((resp) => resp.json())
      .then((resp) => {
        setData(resp["data"]);
      });
  }, []);
  return (
    <div>
      <MaterialReactTable
        data={data}
        columns={columns}    
      />
    </div>
  );
}

export default Table;

两种方式都能实现仅“First Name”列开启筛选、其余列无筛选功能的效果,可根据实际场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:37:02