链式减速器 ngrx
Chaining reducers ngrx
我有特征缩减器,例如:LoadReducer
、DeleteReducer
和 CreateReducer
。它们都是简单的减速器。 (我还有一个名为 namedReducer
的高阶减速器
export function namedReducer(reducerName: string) {
return (reducer: Function) => {
return function newReducer(state, action) {
const { name } = action;
const isInitializationCall = state === undefined;
const shouldRunWrappedReducer = reducerName === name || isInitializationCall;
return shouldRunWrappedReducer ? reducer(_.get(state, reducerName), action) : state;
};
};
}
我想在我的 appstate 中创建子状态,它使用我的 feature reducer 的子集。例如:
应用状态:
{
bananaState: namedReducer('banana')(/* here chaining together CreateReducer and LoadReducer */),
appleState: namedReducer('apple')(/* here chaining together LoadReducer, DeleteReducer */)
}
有了这个,当我发送一个动作时 {name: 'banana', type: 'Load'}
它会 运行 到香蕉 LoadReducer 中。对此有任何模式或建议吗?我试过 compose
和 combineReducers
但没有成功。我错过了什么。有没有什么工具可以将函数链接在一起。
非常感谢。
此致,
塔马斯
我有特征缩减器,例如:LoadReducer
、DeleteReducer
和 CreateReducer
。它们都是简单的减速器。 (我还有一个名为 namedReducer
export function namedReducer(reducerName: string) {
return (reducer: Function) => {
return function newReducer(state, action) {
const { name } = action;
const isInitializationCall = state === undefined;
const shouldRunWrappedReducer = reducerName === name || isInitializationCall;
return shouldRunWrappedReducer ? reducer(_.get(state, reducerName), action) : state;
};
};
}
我想在我的 appstate 中创建子状态,它使用我的 feature reducer 的子集。例如:
应用状态:
{
bananaState: namedReducer('banana')(/* here chaining together CreateReducer and LoadReducer */),
appleState: namedReducer('apple')(/* here chaining together LoadReducer, DeleteReducer */)
}
有了这个,当我发送一个动作时 {name: 'banana', type: 'Load'}
它会 运行 到香蕉 LoadReducer 中。对此有任何模式或建议吗?我试过 compose
和 combineReducers
但没有成功。我错过了什么。有没有什么工具可以将函数链接在一起。
非常感谢。
此致, 塔马斯