我正在尝试获得完全相同的行为How to reset the state of a Redux store?。除了我使用的是连接的反应路由器。我的配置如下所示:
减速机
export const rootReducer = history => combineReducers({
auth: auth.reducer,
router: connectRouter(history),
authentication: authenticationReducer,
users: usersReducer,
project: projectReducer,
domain: domainReducer,
test: testReducer
});商店
export const history = createBrowserHistory({ basename: '/metro' });
const sagaMiddleware = createSagaMiddleware();
const middleware = [
...getDefaultMiddleware({
immutableCheck: false,
serializableCheck: false,
thunk: true
}),
sagaMiddleware,
routerMiddleware(history)
];
const store = configureStore({
reducer: rootReducer(history),
middleware,
devTools: process.env.NODE_ENV !== "production",
enhancers: [reduxBatch]
});我试过了,但不起作用:
const appReducer = (state, action, history) => combineReducers({
auth: auth.reducer,
router: connectRouter(history),
authentication: authenticationReducer,
users: usersReducer,
project: projectReducer,
domain: domainReducer,
test: testReducer
})
export const rootReducer = history => (state, action) => {
if (action.type === actionTypes.LOGOUT_SUCCESS) {
state = undefined;
}
return appReducer(state, action, history)
};发布于 2020-11-20 00:57:46
这似乎是包含此包的known issue。解决方案似乎是将状态设置为initialState值,而不是undefined。唯一需要注意的是,您不应该尝试重新初始化router,默认情况下,-it应该这样做。
const appReducer = (state, action, history) => combineReducers({
auth: auth.reducer,
router: connectRouter(history),
authentication: authenticationReducer,
users: usersReducer,
project: projectReducer,
domain: domainReducer,
test: testReducer
})
const initialState = {
// Don't reset router here
auth: {},
authentication: {},
users: {},
project: {},
domain: {},
test: {}
}
export const rootReducer = history => (state, action) => {
if (action.type === actionTypes.LOGOUT_SUCCESS) {
state = initialState;
}
return appReducer(state, action, history)
};https://stackoverflow.com/questions/64916207
复制相似问题