如何在React Router 3.x中配置基名

时间:2017-02-11 22:19:45

标签: reactjs react-router browser-history react-router-redux

我有一个在嵌套网址上运行的应用程序,而不是root用户。让我们说false

我读了here,在路由器2.x中你可以配置基本名称。

如何在反应路由器3.x中完成?

仅供参考我也在使用example.com/app包。

2 个答案:

答案 0 :(得分:5)

此功能在React Router中不再存在。我遇到了类似的问题,发现了这个问题。

第1步:安装历史记录(3.0.0)

npm install --save history@3.0.0

第2步:在路由器文件(包含<Router>的文件)中从历史记录中导入{useBasename}:

import { useBasename } from 'history'

第3步:修改您的<Router>,如下例所示:

<Router history={ useBasename(() => browserHistory)({ basename: '/app' }) }>

答案 1 :(得分:1)

我认为在React Router文档中配置历史记录的部分是您正在寻找的内容:

https://github.com/ReactTraining/react-router/blob/v3/docs/guides/Histories.md#customize-your-history-further

这是一个与react-router-redux集成的完整示例(不包含一些不必要的信息):

import React from 'react';
import ReactDOM from 'react-dom';
import createBrowserHistory from 'history/lib/createBrowserHistory';
import { useRouterHistory } from 'react-router';
import { syncHistoryWithStore } from 'react-router-redux';

import Root from './containers/Root';
import configureStore from './store/configureStore';

const historyConfig = { basename: '/some-basename' };
const browserHistory = useRouterHistory(createBrowserHistory)(historyConfig);

const store = configureStore({ initialState, browserHistory });
const history = syncHistoryWithStore(browserHistory, store, {
  selectLocationState: (state) => state.router,
});

ReactDOM.render(
  <Root history={history} store={store} />,
  document.getElementById('root')
);