reactjs - 如何使用减速器在现有应用程序中添加反应管理员
问题描述
我想在已经有 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 没有正确组合,任何已经将所需的管理员和路由器减速器与现有的合并的想法或代码示例?
解决方案
推荐阅读
- javascript - 输入“分页”
'缺少类型'UserEntity'的以下属性: - python - 比较两个字符串并在 Python 中提取浮点值
- c++ - 为什么不返回 std::vector 生成有关 dll 接口的编译器警告?
- ios - 我可以通过带有 RxSwift 的标志来暂停数据流吗?
- php - 为什么我是 laravel 抛出 SQLSTATE[42000]:语法错误或访问冲突:1064 错误
- r - 将基于索引的循环变成基于名称的函数
- c# - 如何将 ListBox 项添加到 DataGridView 列标题
- python - 线性回归:ValueError:x 和 y 必须具有相同的第一维,但具有形状 (10, 1) 和 (1, 1)
- java - 添加数字的第一个和最后一个数字
- javascript - 如何将日期时间格式数据从 json 导入和导出到 nosql(firestore)