使用配置的basename的react-router 3.0.x与react-router-redux 4.0.x配合使用

时间:2017-06-15 15:53:39

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

我有以下环境:

"react": "^15.4.2",
"react-redux": "^5.0.3",
"react-router": "^3.0.2",
"react-router-redux": "^4.0.8",

迁移到react-router 4 不是此项目中的选项

通过以下配置,我的应用程序正常运行(这意味着:我的dispatch(push('/foo'))正在运行,执行浏览器URL更改还原商店@@reouter/LOCATION_CHANGE):

import { Provider } from 'react-redux';
import { browserHistory } from 'react-router';
import { Router, useRouterHistory } from 'react-router';

const history = syncHistoryWithStore(browserHistory, store);

ReactDOM.render(
  <Provider store={store}>
    <Router history={history} routes={routes} />
  </Provider>,
  rootEl
);

当我需要在路由网址中添加basename时,问题就开始了。

我发现了一些不同的方法。按照我做的一个测试:

import { Provider } from 'react-redux';
import { Router, useRouterHistory } from 'react-router';
//import { createHistory } from 'history';
import createBrowserHistory from 'history/lib/createBrowserHistory';


//const browserHistory = useRouterHistory(createHistory)({
//  basename: config.historyBasename,
//});

const browserHistory = useRouterHistory(createBrowserHistory)({
  basename: config.historyBasename,
});

const history = syncHistoryWithStore(browserHistory, store);

ReactDOM.render(
  <Provider store={store}>
    <Router history={history} routes={routes} />
  </Provider>,
  rootEl
);

无论我尝试了哪种配置,我push react-router-redux的发送现已停止工作:我仍然看到浏览器网址更改,但我的商店没有变化。

是否可以让react-router-redux使用上面列出的版本的basename

1 个答案:

答案 0 :(得分:0)

最后我们发现react-router配置没有问题。

问题出在if配置中。 <{1}}参数前面缺少斜线导致错误。