react-admin登录传奇没有运行
Posted
技术标签:
【中文标题】react-admin登录传奇没有运行【英文标题】:react-admin login saga not running 【发布时间】:2021-12-21 00:23:11 【问题描述】:每次用户在 react-admin 中进行身份验证时,我都需要从自定义 reducer 调度一个操作。由于我无法访问我的身份验证提供程序中的 redux 商店,我必须创建一个传奇,根据这篇文章 React-Admin: How can we dispatch a store action from within the `authProvider` code?
这是我的代码:
// index.ts
function App()
return (
<Admin
dataProvider=dataProvider
authProvider=authProvider
customReducers= myReducer
customSagas=[authSaga]
>
[...]
</Admin>
);
// authSaga.ts
import put, take from "redux-saga/effects";
import USER_LOGIN_SUCCESS from "ra-core";
import showNotification from "react-admin";
const authSaga = function* ()
while (true)
console.log("SAGA RUNNING");
yield take(USER_LOGIN_SUCCESS);
// This never runs
console.log("USER_LOGIN_SUCCESS RUNNING");
yield put(showNotification("TEST"));
;
export default authSaga;
我可以在控制台中看到消息“SAGA RUNNING”,但是当用户进行身份验证时,第二个日志没有运行。我尝试使用 USER_LOGIN_SUCCESS 常量,也尝试使用“USER_LOGIN_SUCCESS”。我也尝试使用 takeEvery,但没有任何效果。 “authSaga” 指向我的传奇,而不是 react-admin 中包含的传奇。这是我第一次使用 redux-saga,所以我可能遗漏了一些东西。有什么想法吗?
【问题讨论】:
【参考方案1】:在我看来,操作 USER_LOGIN_SUCCESS 很久以前就被禁用了,它也没有出现在我的应用程序中,请尝试使用 REGISTER_RESOURCE / UNREGISTER_RESOURCE。 请注意,您的每个资源都会执行 REGISTER_RESOURCE / UNREGISTER_RESOURCE 操作。
【讨论】:
我无法使用这些操作。我需要保存在我的 redux 存储中的数据由服务器在登录时返回(当 react-admin 执行 authProvider.login() 时),所以理想情况下我需要在那里调度我的操作。我还将这些数据保存在本地存储中,所以从技术上讲,我应该能够在验证用户后立即在其他地方读取它,但这听起来像是一个不必要的额外步骤。应该有更好的方法从 authProvider 分派操作。以上是关于react-admin登录传奇没有运行的主要内容,如果未能解决你的问题,请参考以下文章