上述错误发生在组件中:在ConnectedRouter中的ConnectedRouterWithContext中的ConnectFunction中,在Provider中我遇到了一个错误,说在状态树中找不到路由器reducer,它必须安装在" router“下。
这是我的store.js文件.
import storage from 'redux-persist/es/storage';
import { apiMiddleware } from 'redux-api-middleware';
import { applyMiddleware, createStore } from 'redux';
import { createFilter } from 'redux-persist-transform-filter';
import { persistReducer, persistStore } from 'redux-persist';
import { routerMiddleware } from 'react-router-redux';
import rootReducer from './redux/reducers';
import { combineReducers } from 'redux-immutable';
import { connectRouter, RouterState } from 'connected-react-router/immutable';
export default (history) => {
const persistedFilter = createFilter(
'auth', ['access', 'refresh']);
const reducer = persistReducer(
{
key: 'polls',
storage: storage,
whitelist: ['auth'],
transforms: [persistedFilter]
},
rootReducer)
const store = createStore(
reducer, {},
applyMiddleware(
apiMiddleware,
routerMiddleware(history))
)
persistStore(store)
return store
}这就是我的index.js
const history = createHistory()
const store = configureStore(history)
ReactDOM.render((
<Provider store={store}>
<ConnectedRouter history={history}>
<Router>
<Switch>
<Route exact path="/login/" component={Login} />
<PrivateRoute path="/" component={App}/>
</Switch>
</Router>
</ConnectedRouter>
</Provider>
), document.getElementById('root'));发布于 2020-08-06 13:50:09
首先,您应该在减速器中添加一个路由器。
const createRootReducer = (history) => combineReducers({
router: connectRouter(history),
... // rest of your reducers
})
export default createRootReducer如果您正在使用react-router-dom@5.x.x,那么您应该使用history@4.10.1,因为最新版本的history (v5)只适用于react-router-dom@6.x.x
https://stackoverflow.com/questions/59452157
复制相似问题