我有一个简单的功能模块,它提供服务并导入自己的统计片段作为功能:
@NgModule({
imports: [
CommonModule,
StoreModule.forFeature('alarms', alarmsReducer, { initialState: alarmsInitialState }),
EffectsModule.forFeature([AlarmsEffects])
],
declarations: [],
providers: [
AlarmsFacade,
AlarmsService
]
})
export class AlarmsModule {
}
我正在将这个模块导入到另外两个模块中,一个需要访问服务的页面,以及 AppModule
,因为我需要在此处导入它以便正确初始化状态.
当我检查 Redux DevTools 时,我可以清楚地看到 @ngrx/store/update-reducers
功能 alarms
被调用了两次。这会导致状态被卡住,停止所有效果(包括与警报功能无关的效果)。
下面的时间线可以显示该问题(在效果初始化后触发第三个 @ngrx/store/update-reducers
操作,而目前只有两个功能,它包含功能 '警报'):
如何避免效果被加载两次?我尝试从 AppModule
中删除该模块,但它破坏了警报状态,因为没有为我的选择器提供默认状态。
最佳答案
这是我的问题:
升级到 ngrx 8 后,我没有从已转换为 createEffect 的效果中删除 @Effect() 装饰器。
我从效果中删除了 {dispatch: false} (现在使用 createEffect),而不是将它们作为第二个参数放在箭头函数之后。
另请参阅:Effect gets called twice when using StoreDevtoolsModule.instrument()
关于angular - NgRx 效果加载两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52219078/