【问题标题】:Redux-Persist and Connected-React-Router: TypeError: Cannot read property 'location' of undefinedRedux-Persist 和 Connected-React-Router:TypeError:无法读取未定义的属性“位置”
【发布时间】:2019-04-16 13:48:16
【问题描述】:

我正在尝试让 React 应用程序与 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;

【问题讨论】:

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


    【解决方案1】:

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

    v6.0.0 需要 React v16.4.0 和 React Redux v6.0。 (它还不支持 React Redux v7.0。我们正在研究兼容性问题。)

    我使用的是react-redux: v7.0.1,它是我自己的真正面子。所以我降级到 v6 并且一切正常。

    【讨论】:

    猜你喜欢
    • 2021-10-19
    • 1970-01-01
    • 2016-11-23
    • 2020-10-10
    • 2019-02-15
    • 1970-01-01
    • 2017-06-22
    • 2021-01-15
    • 2017-09-05
    相关资源
    最近更新 更多