syncHistory
的 react-router-redux
会从browserHistory
获取react-router
的参数。在服务器上,调用syncHistory(browserHistory)
并不真正起作用。我正在尝试使用中间件创建一个商店:
const { syncHistory } from 'react-router-redux'
const { browserHistory } from 'react-router'
const { createStore, applyMiddleware } from 'redux'
const reduxRouterMiddleware = syncHistory(browserHistory)
const createStoreWithMiddleware = applyMiddleware(
routerReduxMiddleware
)(createStore)
在服务器上,我收到以下错误:
unsubscribeHistory = history.listen(function (location) {
^
TypeError: Cannot read property 'listen' of undefined
答案 0 :(得分:1)
正如您所看到的,browserHistory
无法在服务器上运行,因为它使用浏览器内置的历史记录API。在服务器上,您必须将其替换为history/lib/createMemoryHistory
之类的内容,例如
import createHistory from 'history/lib/createMemoryHistory';
const reduxRouterMiddleware = syncHistory(createHistory);
...
有关历史记录的详细信息,请参阅React Router documentation。
从React Router 2开始, docs, createMemoryHistory包含在React Router的一部分中。
import createHistory from 'react-router/lib/createMemoryHistory';