NgRx Effect服务重复调用及Reducer重复执行问题求助
问题:NgRx Effect与Reducer重复执行问题
我分发一个action时,NgRx Effect中的服务会被调用两次(尽管仅分发了一次该action)。此前功能正常,现在必须在所有Effect中使用exhaustMap替代concatMap或mergeMap才能避免该问题。此外,每次分发action时,所有Reducer都会被执行两次。这些问题均始于我将StoreModule.forFeature导入其他懒加载模块之后。
联系人模块中导入Effect和Store的代码
EffectsModule.forFeature([PersonalContactEffects]), StoreModule.forFeature(personalContactFeatureKey, personalContactReducer)
对应的Effect代码
loadPersonalContacts$ = createEffect( () => this.actions$.pipe( ofType(personalContactActions.loadPersonalContactsList), tap(action => console.log("before service call", action)), concatMap(action => this.contactService.getList(action.query)), map(personalContactList => personalContactActions.personalContactsListLoaded({ personalContactList })), catchError(() => of(personalContactActions.setLoading({ loading: false }))) ) );
分发Action的代码
this.store.dispatch(fromPersonalContactActions.loadPersonalContactsList({ query }));
问题截图


内容的提问来源于stack exchange,提问作者Jalaleddin Hosseini
相关产品推荐
相关产品推荐

