如何在 react-admin 的列表视图中添加永久过滤功能?

How to add a permanent filter function to a List view in react-admin?

我是一个 react-admin 列表视图,我只想显示状态值 >2 的记录。 status 是自定义字段。

react-admin 文档的永久过滤器部分(参见 https://marmelab.com/react-admin/List.html)仅指检查特定字段值的静态过滤器,如

export const PostList = (props) => (
    <List {...props} filter={{ is_published: true }}>
        ...
    </List>
);

但我想传递一个过滤函数,例如:

export const PostList = (props) => (
    <List {...props} filter={()=>(status.id > 2)}>
        ...
    </List>
);

不幸的是,这不起作用。 status 是未知的,即使我 return 静态 true 或 false 它对过滤没有影响。

还有其他方法或解决方法吗?

React-admin 不知道您的 API 如何执行 "greater than" 或 "less than" 查询(因为没有标准)。 react-admin 永久过滤器被传递给你的 dataProvider,后者将它们传递给你的 API。

所以我建议你在你的列表中使用一个特殊的过滤键,如下:

export const PostList = (props) => (
    <List {...props} filter={{ status_id_gt: 2 }}>
        ...
    </List>
);

然后,在您的 dataProvider 中,检测该过滤器的使用情况,并将其转换为您的 API 期望的 "greater than" 过滤器。