首页 > 解决方案 > 在 react-admin 中动态加载资源后如何刷新侧边栏菜单

问题描述

我正在使用 react-admin 开发一个应用程序,每个注册用户都将拥有自己的一组动态加载的资源,我们预先不知道确切的资源。用户使用 Auth0 注册和登录。数据是从 Hasura 获取的。该解决方案基于以下示例加载资源:https ://marmelab.com/react-admin/Admin.html#unplugging-the-admin-using-admincontext-and-adminui

动态加载资源正在工作(见下面的片段),但是我需要手动刷新页面才能在侧边栏菜单中查看资源,而侧边栏菜单必须在动态资源可用时立即更新。注销并重新登录后,资源再次不可见,需要再次刷新。

    function AsyncResources() {

        ...

        return (
            <AdminUI
                title="Hasura Dashboard"
                dashboard={Dashboard}
                history={history}
                loginPage={LoginPage}
                layout={Layout}
            >
                {resources.map(resource => (
                    <Resource name={resource.name} key={resource.name} options={getOptions(resource.name)} list={getList(resource.name)} />
                ))}
                <Resource /> { /* Without this Resource, the initial page doesn't load */ }
            </AdminUI>
        );
    }

我查看了有关同一主题的以下问题,但我找不到针对我的具体问题的明确解决方案:https ://github.com/marmelab/react-admin/issues/5177 并回答:“基本上你为每个资源编写组件,但只启用你想要的。” 这对我来说不是一个解决方案,因为这意味着我必须手动添加每个新注册用户的每个资源。

我已经创建了一个自定义菜单以查看是否有帮助,但显示的行为与默认菜单相同。

如何确保动态加载的资源在菜单中可见,而用户无需在登录后刷新窗口?

标签: react-admin

解决方案


推荐阅读