import * as fromAuth from '@reducers/auth.reducer'; import { State } from './state'; import { ActionReducerMap } from '@ngrx/store'; /** * 分别从每个 reducer 中将需要导出的函数或对象进行导出,并起个易懂的名字 */ export const reducers: ActionReducerMap = { auth: fromAuth.reducer, }; // Reducer = State+Action /* // 首先 export const reducers: { auth: fromAuth.reducer, } // 之后 // 需要combineReducers, 这个函数 有点像 分别解压{ {},{},{},... }中的每一个singleReducers,再将处理后的数据,合并为一个{} */ /* reducer = productionReducers | developmentReducers = combineReducers(reducers) | compose(storeFree, combineReducers)(reducers) // 类型是 ActionReducer */ // 想将 两步处理 从继承 变化为 组合 ,需要如下: // 提取出 一个函数,处理环境的判断 及 用另一个 系统内部的方法替代需要combineReducers方法. // 环境的判断: // 可以用 MetatReducer来表示如下特性: 不同环境,只是对combineReducers(reducers) 再加一层装饰 // = MetatReducer(reducers) // 其中MetatReducer 是 !environment.production? storeFree: ; // 类型是 MetaReducer // 其实 MetaReducer 就是 对 combineReducers方法处理过的reducer的 装饰 // hint: // StoreModule.forRoot(_reducers, { metaReducers: metaReducers }), // 其中_reducers 与reducers 只是添加了 类型: ActionReducerMap // = StoreModule.provideStore(reducer); // 即 StoreModule.provideStore(combineReducers(reducers));