Javascript 如何修复错误:在状态树中找不到路由器缩减器,它必须安装在“";路由器“;

Javascript 如何修复错误:在状态树中找不到路由器缩减器,它必须安装在“";路由器“;,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我得到-错误:在状态树中找不到路由器缩减器,它必须安装在“路由器”下 我读过所有类似的主题。尝试了不同的变体,但找不到解决方案。我仍然没有足够的知识来理解这门学科。如果您知道如何修复此错误,请使用Plz index.js import { render } from 'react-dom'; import { Provider, ReactReduxContext } from 'react-redux'; import React from 'react'; import { store, h

我得到-错误:在状态树中找不到路由器缩减器,它必须安装在“路由器”下

我读过所有类似的主题。尝试了不同的变体,但找不到解决方案。我仍然没有足够的知识来理解这门学科。如果您知道如何修复此错误,请使用Plz

index.js

import { render } from 'react-dom';
import { Provider, ReactReduxContext } from 'react-redux';
import React from 'react';
import { store, history} from './store';
import { Route, Switch } from 'react-router-dom';
import { ConnectedRouter } from 'connected-react-router'
import App from './components/App/App';

render(
    <Provider store={store}>
        <ConnectedRouter history={history} context={ReactReduxContext}>
            <Switch>
                <Route path="/" component={App} />
            </Switch>
        </ConnectedRouter>
    </Provider>,
    document.getElementById('root')
);
store.js

import { applyMiddleware, createStore } from 'redux';
import { createLogger } from 'redux-logger';
import { promiseMiddleware, localStorageMiddleware } from './middleware';
import reducer from './reducers/reducers';
import { routerMiddleware } from 'react-router-redux'
import { createBrowserHistory } from 'history';

export const history = createBrowserHistory();
const getMiddleware = () => applyMiddleware(
    routerMiddleware(history), promiseMiddleware, localStorageMiddleware, createLogger()
);

export const store = createStore(
    reducer,
    getMiddleware(),
);
试着这样做: in-store.js

import { applyMiddleware, createStore } from 'redux';
import { createLogger } from 'redux-logger';
import { promiseMiddleware, localStorageMiddleware } from './middleware';
import reducer from './reducers/reducers';
import { createBrowserHistory } from 'history';
import { routerMiddleware } from 'connected-react-router';

export const history = createBrowserHistory();
const myRouterMiddleware = routerMiddleware(history);

const getMiddleware = () => applyMiddleware(
    myRouterMiddleware, promiseMiddleware, localStorageMiddleware, createLogger()
);

export const store = createStore(
    reducer(history),
    getMiddleware()
);
在reducers.js中

import { combineReducers } from 'redux';
import { routerReducer } from 'react-router-redux';

export default combineReducers({
    router: routerReducer
});

import authorization from './authorization';
import mainstate from './mainstate';
import home from './home';
import { combineReducers } from 'redux';
import { connectRouter } from 'connected-react-router'

export default (history) => combineReducers({
    authorization,
    mainstate,
    home,
    router: connectRouter(history)
});

出现了相同的错误:(

有几个问题

createStore(reducer,getMiddleware())
-增强器(中间件)需要是第三个参数,第二个参数应该是存储的初始状态。请参阅

试试这个

createStore(reducer, {}, getMiddleware())

另一个问题是
history
包的版本,使用
react-router-dom
v5,您需要使用
history
v4(最新版本是
4.10.1
)-
history
v5仅与
react-dom
v6兼容

在您在下面的评论中发布的Codesandbox中,在
package.json中更改以下内容可以使其正常工作

"dependencies": {
  ...
  "history": "^5.0.0", -> "history": "4.10.1",
  ...
}

有几个问题

createStore(reducer,getMiddleware())
-增强器(中间件)需要是第三个参数,第二个参数应该是存储的初始状态。请参阅

试试这个

createStore(reducer, {}, getMiddleware())

另一个问题是
history
包的版本,使用
react-router-dom
v5,您需要使用
history
v4(最新版本是
4.10.1
)-
history
v5仅与
react-dom
v6兼容

在您在下面的评论中发布的Codesandbox中,在
package.json中更改以下内容可以使其正常工作

"dependencies": {
  ...
  "history": "^5.0.0", -> "history": "4.10.1",
  ...
}

很多解决方案都指向
历史
库版本

history
程序包的版本
5.x
导致上述问题


请尝试将
历史
版本降级为
4.10.1
,因为有很多解决方案指向
历史
库版本

history
程序包的版本
5.x
导致上述问题


请您尝试将
历史
版本降级为
4.10.1
as

我想您可以在这里找到答案:我想您可以在这里找到答案:谢谢!尝试从“连接的反应路由器”进行正确导入,但仍然存在相同的错误。我从我的reducers.js和store.js文件中添加了更多代码,它可能显示了我的位置错误。啊,等等,我想我发现了潜在的问题:-)将更新answerdone it
createStore(reducer,{},getMiddleware())
但没有任何更改,我在codesandbox上复制了它-它不工作,还有很多事情要做,但是我完全被这个错误卡住了:/明白了-这是
history
react-router-dom
的版本控制问题。回答更新。谢谢!试图从“已连接的路由器”执行正确的导入,但仍然存在相同的错误。我从我的reducers.js和store.js文件中添加了更多的代码,可能是因为它显示了我的错误所在。啊,等等,我想我发现了潜在的问题:-)将更新answerdone it
createStore(reducer,{},getMiddleware())
但没有任何更改,我在codesandbox上复制了它不起作用的项目,还有很多事情要做,但是我完全被这个错误卡住了:/明白了-这是
history
react-router-dom
的版本控制问题。答案已更新。