我正在寻找一个简单问题的解决方案。为了保持一致性,React Admin框架在redux中提供了一个"缓存",以在特定资源的每个路由上持久化过滤器。
案例:我有一页资源"用户"。我有另一个实体的页面,比如说"集团"。要将用户添加到此组,我有一个按钮,可以打开一个显示整个用户列表的(对话框(,并希望可以自由访问此元素上的筛选器。
问题:当我更新用户页面上的过滤器时,过滤器存储在Redux中。当我在另一个页面中打开模态时,le用户列表将与存储的过滤器一起显示。
我的目标:分离这两组过滤器或不要在Redux中存储筛选器状态或在打开模态和关闭模态时重置过滤器。
我发现了这个主题:如何不更改列表过滤上的url与react admin?但我不明白什么组件必须被覆盖。我的另一个问题是,我有第二个莫代尔,里面有另一个,比方说"粉丝俱乐部"。当我更改两个模式列表之一中的过滤器时,它会更新URL中的?filter=...
参数,导致第二个模式打开时使用的过滤器无法应用于此"FanClub"实体。
以前有人面临过这个问题吗?
在modal Resource上,使用带前缀的资源名称,例如modal:users,然后使用修剪前缀的代理dataProvider。
<Resource name="modal:users" />
v2
const trimmerDataProvider => dataProvider => (type, resource, params) => {
return dataProvider(type, resource.replace('modal:', ''), params)
}
v3
const trimmerDataProvider = dataProvider => ({
...dataProvider,
getList: (resource, params) => dataProvider(resource.replace('modal:', ''), params)
})
这样,用户列表和模式过滤器将存储在不同的键上。
请注意,您必须将资源声明为Admin子级,允许ra初始化redux存储