【发布时间】:2019-08-27 16:32:43
【问题描述】:
我知道这个问题在 SO 上已经被问了一百万次了。但我需要帮助。我确实意识到我必须在这里遗漏一些重要的东西。但我没看到。
以下代码触发无限循环。 REMOVE_PROJECT 仅被调度一次。 REMOVE_PROJECT_SUCCESS 被无限触发。 'removed' 被无限记录。我不知道为什么。
所有动作都有独特的类型。 dispatch: false 已为 REMOVE_PROJECT_SUCCESS 启用。
操作:
export const REMOVE_PROJECT = createAction(
'[Project] Remove Project',
props<{ id: string }>()
);
export const REMOVE_PROJECT_SUCCESS = createAction(
'[Project] Remove Project Success',
);
效果:
@Effect()
removeProject$ = createEffect(() => this.actions$.pipe(
ofType(ProjectActions.REMOVE_PROJECT),
switchMap(props =>
this.projects.removeProject(props.id).pipe(
map(() => ({ type: '[Project] Remove Project Success'}),
// have also tried
// map(() => ProjectActions.REMOVE_PROJECT_SUCCESS())
)
))
))
@Effect({ dispatch: false })
removeProjectSuccess$ = createEffect(() => this.actions$.pipe(
ofType(ProjectActions.REMOVE_PROJECT_SUCCESS),
tap(() => console.log('removed')),
))
删除功能:
removeProject(projectId): Observable<void> {
return from(this.db.doc('projects/' + projectId).ref.delete());
}
【问题讨论】:
标签: angular observable ngrx ngrx-effects