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

react-bootstrap-table-next中Column Filter使用及分类过滤点击问题排查

问题分析与解决方案

看起来你遇到的问题核心是错误地覆盖了存储过滤函数的变量,导致后续调用时它不再是一个函数,从而抛出错误。咱们一步步拆解:

问题出在哪?

你在getFilter回调里把表格提供的过滤函数赋值给了categoryFilter,这一步是对的——这个变量本来应该用来存储那个可以触发过滤的函数。但在handleWidgetClick里,你做了这行代码:

categoryFilter = category;

这直接把categoryFilter从原来的过滤函数替换成了你的分类值(比如字符串或者其他类型),之后再调用categoryFilter(category)时,自然就会报错“不是函数”了,因为此时它已经不是函数了。

修正后的代码

首先确保你正确声明categoryFilter变量(用let,因为它会被后续赋值):

// 先在组件顶部声明变量,用来存储过滤函数
let categoryFilter;

const columns = [
  {
    // ...其他配置
    dataField: "Category",
    formatter: formatCategory,
    text: "Category",
    sort: true,
    filter: textFilter({
      getFilter: (filter) => {
        // 组件挂载后,把过滤函数存到categoryFilter里
        categoryFilter = filter;
      }
    })
    // ...其他配置
  }
];

const handleWidgetClick = (category) => {
  // 不要覆盖categoryFilter,直接调用它并传入分类值
  // 加个判断避免组件未挂载时调用报错
  if (categoryFilter) {
    categoryFilter(category);
  }
};

额外提示

为了避免组件还没完成挂载(此时categoryFilter还是undefined)就点击按钮导致报错,加上if (categoryFilter)的判断会更稳妥。这样只有当过滤函数已经被正确赋值后,才会执行过滤操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:07:29