React在共享同一资源的两个列表上使用管理员分隔的过滤器



我正在寻找一个简单问题的解决方案。为了保持一致性,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存储

相关内容

  • 没有找到相关文章

最新更新