如何在不创建新组件或新筛选按钮的情况下禁用react-admin的已保存查询及v4版本新增的筛选器保存功能?
嘿,针对你在react-admin里的这两个需求,我整理了不用额外新建组件就能实现的方案,直接用框架内置的配置就搞定了:
1. 禁用已保存查询功能(无需新建组件)
react-admin其实已经内置了禁用已保存查询的开关,你只需要在你的<List>组件上添加disableSavedQueries={true}这个属性就行,完全不用自定义任何组件:
import { List, Datagrid, TextField } from 'react-admin'; export const PostList = () => ( <List disableSavedQueries={true}> <Datagrid> <TextField source="id" /> <TextField source="title" /> {/* 其他列配置 */} </Datagrid> </List> );
设置这个属性后,页面上的已保存查询下拉菜单会直接被隐藏,同时相关的已查询功能也会被禁用,完全符合你的需求。
2. 禁用筛选器保存功能(无需额外创建筛选按钮)
对于react-admin 4新增的筛选器保存功能,要禁用它且不新增额外按钮,有两种简单的方式:
方式一:在自定义Filter组件中设置
如果你已经有自定义的<Filter>组件,直接给它加上disableSave={true}属性即可:
import { Filter, TextInput, SelectInput } from 'react-admin'; const PostFilter = () => ( <Filter disableSave={true}> <TextInput label="搜索标题" source="title" /> <SelectInput label="状态" source="status" choices={[ { id: 'published', name: '已发布' }, { id: 'draft', name: '草稿' }, ]} /> </Filter> );
然后在<List>中使用这个筛选器就好,保存按钮会直接消失。
方式二:直接在List组件中配置(无需单独写Filter组件)
如果不想单独定义Filter组件,也可以直接在<List>的filterOptions里设置disableSave: true,这样连Filter组件都不用写:
import { List, Datagrid, TextField, TextInput, SelectInput } from 'react-admin'; export const PostList = () => ( <List filters={[ <TextInput label="搜索标题" source="title" key="title" />, <SelectInput label="状态" source="status" choices={[ { id: 'published', name: '已发布' }, { id: 'draft', name: '草稿' }, ]} key="status" /> ]} filterOptions={{ disableSave: true }} > <Datagrid> <TextField source="id" /> <TextField source="title" /> </Datagrid> </List> );
这样设置后,筛选器的保存按钮会被隐藏,用户无法保存新的筛选条件,完全满足你“不创建额外筛选按钮”的要求。
内容的提问来源于stack exchange,提问作者Gustavo Pereira
相关产品推荐
相关产品推荐

