我的所有路由都在资源之前的主机之后包含一个标签,host.com/#/resource,知道我可能做了什么导致这个吗?

All of my routes include a hashtag after the host before the resource, host.com/#/resource, any idea what I might have done to cause this?

我的管理员和资源配置方式的一些示例:

<Admin
    dashboard={Dashboard}
    dataProvider={dataProvider}
    appLayout={MainLayout}
    title="Removed So I Don't Get Fired"
  >
    <Resource name="apples" list={ApplesList} />
    <Resource name="pears" list={PearsList} show={PearShow} />
    <Resource name="peaches" list={PeachesList} create={PeachesCreate} edit={PeachesEdit}/>
  </Admin>

有效的路线是:

host.com/#/apples
host.com/#/pears
host.com/#/pears/pearnumber/show

等...

如果我尝试访问:

host.com/apples
host.com/pears
host.com/pears/pearnumber/show

浏览器重定向到:

host.com/apples#/
host.com/pears#/
host.com/pears/pearnumber/show#/

如果您需要任何其他信息,请告诉我。

基本上是为了历史。您可以找到更多信息 here 对于您尝试访问的路线,可能未被识别,因此路线后会出现 #。它假定路由是主机路由。不确定最后这个。

这听起来与 相似。我不是 React 专家,但 PushState API 路由的一个重要组成部分是页面必须将所有路由基于基本 URI。如果未指定基本 URI,则库将倾向于使用访问的原始 URI 作为基本 URI。

如果您使用的是 PushState API,那么我建议您将 <base href="/" /> 添加到您的页面 <head>。这将向您的页面表明所有路径都是相对于主机根目录的。但是,看起来您只是在使用基于散列的路由(尽管仍然将 host.com 的所有子路径别名为您的页面)。基于哈希的路由无法更改 URI 路径,因此您将无法使用当前设置将 host.com/apples 重定向到 host.com/#/apples

我建议更改路由策略以改为使用 PushState API:https://github.com/marmelab/react-admin/blob/master/docs/Admin.md#history。这与上面提到的 <base> 标记相结合,将允许您的页面使用根 URI 作为其基本 URI,并在直接导航到路由时修复路由。

上面的link建议使用history npm包创建历史配置(在本例中使用createBrowserHistory函数),然后将其附加到Admin节点如下:

import createHistory from 'history/createBrowserHistory';

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

const App = () => (
    <Admin history={history}>
        ...
    </Admin>
);