我有一个非常简单的应用,并且是第一次使用ngrx
reducer.module.ts
@NgModule({
imports:[
StoreModule.forRoot({
sliceA: AReducer,
sliceB: BReducer
})
]
})
AReducer.ts
export function AReducer(state, action : AActions) {
switch(...)
}
BReducer.ts
export function AReducer(state, action : BActions) {
switch(...)
}
someComponent.ts
store.dispatch(new AAction());
现在我希望ngrx只会触发AReducer而不触发BReducer,但是我看到它同时触发了两者。这也很令人讨厌,因为即使我将第二个参数参数化为BAction类型,BReducer的第二个参数也是AAction。
那么有什么办法可以让ngrx只触发相关的reducer?还是触发所有设计的设计,而无关紧要的设计只是简单地退货了?
答案 0 :(得分:3)
据我了解,这是典型的NgRx
行为。对于NgRx
,所有actions
都是独立的/无关的,无论您在哪个文件中定义它们。reducers
都一样,您将使用不同的文件来使其可维护,但是{{1 }}对所有分派的动作进行所有化简。
但是,在NgRx
中通常要做的是,当实施reducer
处理动作时,如果您case
来自return
, case
停止寻找其余的减速器。
所以在您的情况下:
NgRx
答案 1 :(得分:0)