首页 > 解决方案 > 如何使用减速器在现有应用程序中添加反应管理员

问题描述

我想在已经有 reducer 和 store 的应用程序中添加react-admin

商店是这样创建的:

    const store: Store<IState> = createStore(
        mainReducer,
        initialState,
        middleware
     );

并且 mainReducer 是从以下位置导入的:

const reducers = {
    firstReducer,
    secondReducer,
    //others
};

 export function mainReducer(state: IState, action: IAction<any>): IState {
        return reducers[action.type](state, action.payload);
}

现在我想添加 react-admin

<Provider store={ store }>
    <Admin />
</Provider>

文档中,如果在现有 redux 的应用程序中添加,react-admin 要求 redux 状态必须包含至少 2 个 reducer:admin 和 router,在商店创建时尝试像这样将 admin、router 与 mainReducer 结合

import { connectRouter } from 'connected-react-router';
import { adminReducer } from 'react-admin';

const reducersWithAdmin = combineReducers({
     admin: adminReducer,
     router: connectRouter(history),
     mainReducer
});

const store: Store<IState> = createStore(
    reducersWithAdmin ,
    initialState,
    middleware
);

在控制台中运行后出现错误:

redux.js:372 未捕获的错误:Reducer“mainReducer”在初始化期间返回未定义。如果传递给 reducer 的状态未定义,则必须显式返回初始状态。初始状态可能不是未定义的。如果你不想为这个 reducer 设置值,你可以使用 null 而不是 undefined。

combineReducers 没有正确组合,任何已经将所需的管理员和路由器减速器与现有的合并的想法或代码示例?

标签: reactjsreduxreact-admin

解决方案


推荐阅读