reactjs - connectedRouter 错误:在状态树中找不到路由器减速器,它必须安装在“路由器”下
问题描述
我是 React.js 的新手,并且正在设置基础项目,当时我遇到了一个问题,即我的路由已更改但组件未加载。谷歌搜索后,我发现我需要使用 ConnectedRouter。在设置 ConnectedRouter 时,我收到控制台错误:在状态树中找不到路由器减速器,它必须安装在“路由器”下
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
import { ConnectedRouter, connectRouter, routerMiddleware } from "connected-react-router";
import { Provider } from "react-redux";
import { createStore, combineReducers, applyMiddleware, compose } from 'redux';
import createSagaMiddleware from 'redux-saga';
import loginReducer from "./store/reducers/login";
import { watchLogin} from "./store/sagas";
import { history } from '../src/shared/history';
import { push } from 'react-router-redux';
import './index.css';
import App from './App';
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const rootReducer = combineReducers({
login: loginReducer
});
const routersMiddleware = routerMiddleware(history)
const sagaMiddleware = createSagaMiddleware();
const middlewares = [sagaMiddleware, routersMiddleware];
const store = createStore(
connectRouter(history)(rootReducer),
{},
composeEnhancers(applyMiddleware(...middlewares))
);
sagaMiddleware.run(watchLogin);
const app = (
<Provider store={store}>
<ConnectedRouter history={history}>
<App />
</ConnectedRouter>
</Provider>
);
ReactDOM.render(app, document.getElementById('root'));
解决方案
为了帮助未来的灵魂解决这个问题,事实证明,根据链接的 github 讨论,该history
包的 5.0 版本导致了这个问题,降级到 4.10.1 版本为我解决了这个问题。
npm install history@4.10.1
推荐阅读
- javascript - 我的 ReactJS 网站中没有显示 Font-Awesome 图标
- mongodb - 无法通过redash连接mongodb
- javascript - 如何导入jsonwebtoken的verify抛出的TokenExpiredError?
- .net-core - 当这些包的版本优于运行时的版本时,如何恢复 nuget 包?
- docker - Uncaught TypeError: handler.apply is not a function (webpack-internal) with Vue/Rails/Cypress
- c++ - 如何在正常工作的同时修改它?
- java - How way around it, my behavior OnContentRead executed when uploading files? I don't need it
- algorithm - 我的数组等边算法意外结果
- excel - Menu not accessible when new workbook has been created
- java - 为什么 tx annotation-driven 会产生冲突?