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

Material UI Data Grid使用renderCell的字段过滤功能失效如何解决

失效原因

Data Grid 默认会读取列配置中field对应的数据行字段值执行过滤逻辑,你当前配置的movie列绑定的字段是movie,但实际渲染用的是行数据里的title字段,数据行不存在movie属性,过滤逻辑无法获取到待匹配的有效值,因此过滤失效。

解决方案

方案1:新增valueGetter配置(改动最小)

给movie列添加valueGetter属性,指定该列用于过滤、排序的实际取值为title字段,即可复用默认过滤逻辑实现电影标题过滤:

const columns = [
  { field: "_id", headerName: "ID", width: 110 },
  {
    field: "movie",
    headerName: "Movie",
    width: 240,
    // 新增valueGetter指定该列实际取值
    valueGetter: (params) => params.row.title,
    renderCell: (params) => {
      return (
        <div className={Style.usercell}>
          <img src={params.row.featuredImg} alt="" />
          <span>{params.row.title}</span>
        </div>
      );
    },
  },
  { field: "genre", headerName: "Genre", width:  120 },
  { field: "year", headerName: "Year", width:  120 } 
]

方案2:自定义过滤函数(适配特殊需求)

如果需要自定义匹配规则,比如模糊匹配之外的逻辑、多字段联合匹配,可以给列配置filterFn自定义过滤逻辑:

{
  field: "movie",
  headerName: "Movie",
  width: 240,
  // 自定义过滤逻辑,示例为不区分大小写的模糊匹配
  filterFn: (_, row, filterValue) => {
    if (!filterValue) return true;
    return row.title.toLowerCase().includes(filterValue.trim().toLowerCase());
  },
  renderCell: (params) => {
    return (
      <div className={Style.usercell}>
        <img src={params.row.featuredImg} alt="" />
        <span>{params.row.title}</span>
      </div>
    );
  },
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:36:04