Redux-Persist и Connected-React-Router: TypeError: Невозможно прочитать свойство 'location' из неопределенного - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь заставить приложение React правильно работать с React Router и Redux, но я постоянно получаю TypeError: Cannot read property 'location' of undefined для любых компонентов, которые имеют избыточность.Я использую 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;
};

redurs /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;

1 Ответ

0 голосов
/ 17 апреля 2019

После трех часов отладки и прочтения дополнительной информации о каждой библиотеке connected-react-router, react-redux и react-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, и все начало отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...