1

我的管理员和资源如何配置的一些示例:

<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

ETC...

如果我尝试访问:

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

浏览器被重定向到:

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

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

4

2 回答 2

1

这听起来类似于https://stackoverflow.com/a/49158969/1941654。我不是 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,并在直接导航到路由时修复路由。

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

import createHistory from 'history/createBrowserHistory';

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

const App = () => (
    <Admin history={history}>
        ...
    </Admin>
);
于 2018-07-17T17:20:27.273 回答
0

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

于 2018-07-17T16:56:14.850 回答