我试图让React应用程序与Router和Redux一起正常工作,但是我不断地将TypeError: Cannot read property 'location' of undefined应用到任何有redux的组件上。我正在使用connected-react-router lib在商店注册路由器,但显然我做错了什么。
store/configureStore.js
import { createStore, applyMiddleware, compose } from 'redux';
import reducer from '../reducers';
import { persistStore } from 'redux-persist';
import { createBrowserHistory } from 'history';
import { routerMiddleware } from "connected-react-router";
let _persistor;
let _store;
export const history = createBrowserHistory();
export const getStore = (props) => {
if (_store) {
return _store;
}
const initialState = (props) ? {...props} : {};
_store = createStore(
reducer,
initialState,
compose(
applyMiddleware(routerMiddleware(history)),
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
),
);
_persistor = persistStore(_store);
return _store;
};
export const getPersistor = () => {
return _persistor;
};reducers/index.js
import { combineReducers } from 'redux';
import { persistReducer } from 'redux-persist';
import Menu from './Menu';
import SelectedServices from './SelectedServices';
import { connectRouter } from 'connected-react-router'
import { history } from "../store/configureStore";
const rootReducer = (history) => combineReducers({
router: connectRouter(history),
menu: Menu,
selectedServices: SelectedServices,
});
const reducer = persistReducer(
{
key: 'root',
storage: require('localforage'),
whitelist: [],
},
rootReducer(history),
);
export default reducer;发布于 2019-04-16 21:04:45
经过三个小时的调试和阅读了更多关于connected-react-router、react-redux和react-router-dom库的内容,我找到了一行,我跳过了几次,但最终我在package.json中检查了它。目前:
v6.0.0要求Reactive16.4.0和ReduxV6.0。(它还不支持ReduxV7.0。我们正在调查可赔性问题。)
我用的是react-redux: v7.0.1,这对我自己来说是一种真实的面貌。所以我降级为v6,一切开始都很顺利。
https://stackoverflow.com/questions/55709775
复制相似问题