如何在 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" 过滤器。
我是一个 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" 过滤器。