React-admin在共享相同资源的两个列表上分离的过滤器

问题描述 投票:0回答:1

我正在寻找一个简单问题的解决方案。为了保持一致,React-Admin框架在redux中提供了一个“缓存”,以在特定资源的每个路由上保留过滤器。

Case:我有一个“用户”资源页面。我还有另一个实体的页面,可以说“组”。要将用户添加到该组,我有一个按钮,可以打开(对话框),该对话框显示整个用户列表,并希望可以自由访问此元素上的过滤器。

问题:当我在“用户”页面上更新过滤器时,该过滤器存储在Redux中。当我在另一页中打开模式时,将显示“用户列表”以及已存储的过滤器。

我的目标:分离这两组过滤器要么不要在Redux中存储过滤器状态要么在打开模态和关闭模态时重置过滤器。

我找到了这个主题:How to not change the url on list filtering with react-admin?但是我不明白必须重写哪些组件。我的另一个问题是,我有另一个模态,其中有一个叫“ FanClub”。当我在两个模式列表之一中更改“过滤器”时,它将更新URL中的?filter=...参数,导致第二个模式用无法应用于此“ FanClub”实体的过滤器打开。

有人以前遇到过这个问题吗?

javascript reactjs react-redux react-router react-admin
1个回答
0
投票

在模式资源上,使用带前缀的资源名称,例如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)
})

这样,用户列表和模式过滤器将存储在不同的键上。

请注意,您必须将Resource声明为Admin子级,以允许ra初始化Redux存储区

© www.soinside.com 2019 - 2024. All rights reserved.