如何将 "base URL" 添加到所有 react-admin 页面?

How do I add a "base URL" to all react-admin pages?

我正在尝试将 react-admin 集成到现有的 React 应用程序中,并且能够启动基本的入门页面和 运行,但是,在添加虚拟资源并在 UI,我被重定向到 http://my-application.net/[resource name],它错误地显示了我的应用程序错误页面。

我正在尝试在类似沙盒的场景中设置 React admin,以避免与我用于路由的一些自定义内容发生冲突*,目前我已经设置了在 [=12 下显示 react-admin 的内容=] 我的应用程序中的路径。 是否可以告诉 react-admin 为其所有链接(即单击资源时)添加 admin 前缀,以便我的应用程序能够正确检测并将这些页面路由到 react-admin? 例如,在上一段的场景中,当单击虚拟资源时,我希望它将我定向到 http://my-application.net/admin/[resource name] 而不是 http://my-application.net/[resource name]

我能得到的最接近的是 this SO post,它讨论了将 admin/ 作为前缀添加到所有资源的 name。我已经能够通过对我的路由配置进行一些调整来完成这项工作,将所有 /admin 页面发送到 react-admin,但是像这样更改资源名称也会产生在 [=54= 中更改它们的副作用](即我的 users 资源在 react-admin 的侧边栏中显示为 admin/users

其他我看了觉得没什么用的:

React-admin 是否有自动将 baseUrl 添加到所有链接的选项?

* 虽然与这个问题无关,但我尝试以这种方式做事的原因是因为我的路由系统(UniversalRouter,请参阅 here) is redux-based and appears to directly conflict with some of the redux state that react-admin needs according to the Using redux in a custom app 教程。

我从 post 中发现的一个 answer Whosebug“相关”边栏似乎表明历史记录 API 具有这种功能:

The only other thing I can think of is properly configuring baseName in your history.

引用 OP 问题中的这一行(为清楚起见更改了变量名称):

const newHistory = createHistory({ basename: '/myadmin' });

将此修改后的历史记录传递到 react-admin 的 Admin 组件似乎实现了预期的行为,即点击资源链接现在可以正确重定向到指定 baseURL 下的该资源。

<Admin ... history={newHistory} ...>

其他答案中也提到了这一点,它比我的或我基于此答案的答案更简洁。