Фильтры, разделенные React-admin, для двух списков, использующих один и тот же ресурс - PullRequest
0 голосов
/ 24 апреля 2020

Я ищу решение простой проблемы. Для согласованности инфраструктура React-Admin предоставляет «кэш» в редуксе для сохранения фильтров на каждом маршруте для определенного ресурса c.

Случай: У меня есть страница ресурсов «Пользователи» , У меня есть другая страница для другого лица, скажем, «Группа». Чтобы добавить пользователя в эту группу, у меня есть кнопка, которая открывает (диалог), который отображает весь список пользователей и хочет иметь свободный доступ к фильтрам по этому элементу.

Проблема: Когда я обновляю фильтр на странице «Пользователи», он сохраняется в Redux. Когда я открываю модальное окно на другой странице, список пользователей отображается с сохраненным фильтром.

Моя цель: Разделить эти два набора фильтров ИЛИ Не сохранять состояния фильтров в Redux ИЛИ Сбросить фильтры при открытии модальных и при закрытии модальных.

Я нашел эту топи c: Как не изменить URL-адрес при фильтрации списка с помощью response-admin? Но я не понимаю какой компонент должен быть переопределен. Другая моя проблема в том, что у меня есть второй модал с другим, скажем, "FanClub". Когда я изменяю фильтры в одном из двух модальных списков, он обновляет параметр ?filter=... в URL, заставляя второй модал открываться с фильтрами, которые нельзя применить к этому объекту "FanClub".

Кто-то сталкивался с этой проблемой раньше?

1 Ответ

0 голосов
/ 01 мая 2020

На модальном ресурсе используйте префиксное имя ресурса, например, 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)
})

Таким образом, список пользователей и модальный фильтр будут храниться на разных клавишах.

Обратите внимание, что вы должны объявить ресурс как дочерний элемент администратора, что позволяет ra инициализировать хранилища избыточности

...