首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux-持久化和连接反应-路由器: TypeError:无法读取未定义的属性“位置”

Redux-持久化和连接反应-路由器: TypeError:无法读取未定义的属性“位置”
EN

Stack Overflow用户
提问于 2019-04-16 13:48:16
回答 1查看 1.8K关注 0票数 2

我试图让React应用程序与Router和Redux一起正常工作,但是我不断地将TypeError: Cannot read property 'location' of undefined应用到任何有redux的组件上。我正在使用connected-react-router lib在商店注册路由器,但显然我做错了什么。

store/configureStore.js

代码语言:javascript
复制
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

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-16 21:04:45

经过三个小时的调试和阅读了更多关于connected-react-routerreact-reduxreact-router-dom库的内容,我找到了一行,我跳过了几次,但最终我在package.json中检查了它。目前:

v6.0.0要求Reactive16.4.0和ReduxV6.0。(它还不支持ReduxV7.0。我们正在调查可赔性问题。)

我用的是react-redux: v7.0.1,这对我自己来说是一种真实的面貌。所以我降级为v6,一切开始都很顺利。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55709775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档