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登录传奇没有运行的主要内容,如果未能解决你的问题,请参考以下文章

单机传奇登录脚本错误

react-admin 没有'访问控制允许来源'

React-admin 没有编辑列表

登录前后将 react-admin 应用与捆绑包拆分的代码

在win 7下面运行传奇登陆器,为啥会提示出错?

React-admin - 如果未经身份验证,我如何强制 Dasbhoard 要求登录