You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 }));

问题截图

问题截图1
问题截图2

内容的提问来源于stack exchange,提问作者Jalaleddin Hosseini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:18:21