【发布时间】:2021-05-25 21:40:09
【问题描述】:
我是 angular + ngrx 的新手,并且对适当的大规模控制流有疑问。假设我有一个Cars 组件,它可以加载汽车列表并可以创建一辆新车。一旦这些效果执行,它们将调度 SUCCESS 和 FAILURE 动作。在我的ngOnInit 中,我订阅了每个成功/失败的操作以执行适当的操作 - 例如:
ngOnInit() {
this.actions$
.pipe(
ofType<fromCarsActions.GetCarsSuccessAction>(fromCarsActions.CarsActionTypes.GET_CARS_SUCCESS),
takeUntil(this.unsubscribe$)
)
.subscribe(results => {
// do something if load all cars SUCCEEDS
});
this.actions$
.pipe(
ofType<fromCarsActions.GetCarsFailureAction>(fromCarsActions.CarsActionTypes.GET_CARS_FAILURE),
takeUntil(this.unsubscribe$)
)
.subscribe(results => {
// do something if load all cars FAILS
});
this.actions$
.pipe(
ofType<fromCarsActions.AddCarSuccessAction>(fromCarsActions.CarsActionTypes.ADD_CAR_SUCCESS),
takeUntil(this.unsubscribe$)
)
.subscribe(results => {
// do something if add car SUCCEEDS
});
this.actions$
.pipe(
ofType<fromCarsActions.AddCarsFailureAction>(fromCarsActions.CarsActionTypes.ADD_CAR_FAILURE),
takeUntil(this.unsubscribe$)
)
.subscribe(results => {
// do something if add car FAILS
});
}
订阅所有这些 SUCCESS/FAILURE 操作(如果只有少数几个)很好,但对于更复杂的组件很容易很快失控。
我可以做的另一个选择是在效果本身中调度适当的操作,但这不会使效果非常可重用。
所以我的问题是,对于使用 NGRX 与后端通信以轻松管理订阅/收听多个不同效果成功/失败的组件的最佳做法是什么?
我知道这是一个有点抽象的问题,所以如果我能澄清任何事情,请告诉我。
【问题讨论】: