React-Admin: Как мы можем отправить действие магазина из кода authProvider?

В асинхронной выборке AUTH_LOGIN мы хотим отправить действие после получения данных из дополнительных конечных точек (помимо конечной точки входа, например, мы вызываем другую конечную точку для передачи данных для учетной записи и т. Д.) .

У нас есть все на месте (действие, редуктор, использованные объединяющие элементы и т. Д.), Но мы не уверены, как мы можем «подключить» функцию authClient в файле authClient.js, поскольку это не component, чтобы использовать функцию connect. .

Как тогда мы могли dispatch действовать?


person user2078023    schedule 19.04.2018    source источник


Ответы (1)


Как вы можете видеть в побочный эффект аутентификации, данные, возвращаемые вашим authClient, будут установлены в качестве полезной нагрузки действия USER_LOGIN_SUCCESS, которое будет отправлено автоматически при разрешении authClient.

Чтобы применить любую логику к плате аутентификации и в конечном итоге отправить некоторые настраиваемые действия, вам необходимо создать кастомная сага, которая будет реагировать на USER_LOGIN_SUCCESS действия.

Обязательно нужно добавить пример в документацию

person Gildas Garcia    schedule 23.04.2018
comment
Спасибо! В самом деле, если бы вы могли добавить пример в документацию, это было бы здорово, потому что концепции «саги» новы для многих разработчиков. - person user2078023; 25.04.2018
comment
@Glidas, у меня получилось по вашим рекомендациям! Единственная причина заключается в том, что я также должен выполнить тот же метод FETCH для CHECK_USER, чтобы приложение извлекало необходимые (дополнительные) данные даже при возникновении BROWSER REFRESH. У меня есть флаг window.extraDataFetched, что я получил данные, но, хотя он работает, вначале он извлекается 3 раза. Есть идеи, как это запретить? - person user2078023; 25.04.2018
comment
На самом деле, вместо этого я использовал takeLatest(USER_CHECK, fetchExtraLoginData) и, похоже, он работает, за исключением того, что он загружается 2 раза, а не только 1. - person user2078023; 25.04.2018