javascript - 升级react-admin v2到v3,权限始终为空且上下文不一致

标签 javascript reactjs react-admin

当我像这样包装layout时,我陷入了react-admin v2v3升级的困境,有两个奇怪的问题:

  composeLayout(Layout) {
    const ComponentLayout = ({ references, dispatch, ...props }) => ( // eslint-disable-line no-unused-vars
      <WithPermissions
        // eslint-disable-next-line no-unused-vars
        render={({ permissions }) => (
          <AppContextProvider
            permissions={permissions}
            references={references} 
          >
            <Layout {...props} />
          </AppContextProvider>
        )}
      />
    );

    const mapStateToProps = (state) => {
      const references = {};
      Object.keys(state.admin.resources).forEach((name) => {
        set(references, `${camelizePath(name)}.name`, name);
      });
      return { references };
    };
    return connect(mapStateToProps)(ComponentLayout);
  }
  • references 设置正确,但随后从上下文中读取时始终为空对象
  • permissions 始终为未定义,而 authProvider.getPermissions() 始终返回非空权限数组。

这是调试器中的 View ,它显示传递给 AppContextProvider 的值,我们看到 permissionsundefinedreferences 不为空:

enter image description here

此屏幕截图显示了当我们尝试读取上下文时的内容,我们可以看到 references 现在是一个空对象:

enter image description here 它在react-admin v2中运行良好。

我们的目标是:

  • 使用引用对象中的引用,而不是在我们的应用中随处编写硬引用。
  • 创建一个取决于用户对应用的权限的 pages 对象,这样我们就不会在应用中的任何地方编写硬链接(hard link)。

最近发生了什么变化可能导致 v3 中出现如此奇怪的行为?

最佳答案

阅读 https://github.com/marmelab/react-admin/blob/master/UPGRADE.md 中的以下部分

请注意,不鼓励从上下文直接访问 authProvider(且未记录)。如果您需要与 authProvider 交互,请使用新的 auth hooks:

使用登录 使用注销 使用已验证 使用验证状态 使用权限

关于javascript - 升级react-admin v2到v3,权限始终为空且上下文不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59408349/

相关文章:

javascript - 基于语言的条件渲染 : combining props and constants to render component

react-admin - ListView 中的 ChipField 条件颜色

javascript - 处理 Jquery 模板中的特殊字符

javascript - 条件语句数组循环

javascript - sessionStorage 无法立即可用

javascript - 导入 React 组件时 Webpack 模块构建失败

javascript - Bootstrap 下拉菜单 : add class when re-rendered

reactjs - 来自服务器的数据时图例重叠

react-admin - AUTH_LOGIN 获取完成后如何调用 AUTH_CHECK?

javascript - React-Admin TextField 和 TextInput 不显示标签和 css