代码之家  ›  专栏  ›  技术社区  ›  danday74

如何保持ngrx干燥[[关闭]

  •  0
  • danday74  · 技术社区  · 7 年前

    别再说了

    我有两个州。

    一个是汽车,一个是飞机。

    所有的效果都是复制粘贴和更改效果名称和请求URL。

    有没有办法避免ngrx中的这种重复?

    3 回复  |  直到 7 年前
        1
  •  1
  •   Arne    7 年前

    当然有,你可以很好的将泛型应用于状态和效果。在你的商店里,动作是通过它们的类型来识别的,所以确保你包括了它们,然后你就可以开始了。

    可悲的结果是,当你使用你的行动,你需要添加逻辑,因为

    store.dispatch(new Load('car'));
    

    store.dispatch(new LoadCar());
    



    对于效果,可以创建一个接受多种类型的效果:

    $loadCar = this.actions.pipe(
       ofType([VehicleActions.loadCar, VehicleActions.loadTruck]),
       this.applyLoadLogic
    )
    
    $loadTruck = this.actions.pipe(
       ofType(VehicleActions.loadTrailer),
       obs => this.applyLoadLogic(obs, false)
    )
    
    applyLoadLogic(in: Observable<Action>, canDrive: boolean = true): Observable<Action> {
       return in.pipe(
          map(action => this.doMagic(action.payload, canDrive))
       );
    }
    
        2
  •  2
  •   timdeschryver    7 年前

    也就是说有 @ngrx/entity 管理您的收藏。

    而且还有 ngrx-data 这创造了你所说的一切(动作、还原、效果和服务)。

        3
  •  1
  •   Vash72    7 年前

    不,这是ngrx(redux)著名的“样板”,但是请看ngrx的作者给出了一些关于
    用NgRx减少样板文件-Brandon Roberts&迈克·瑞安
    https://www.youtube.com/watch?v=t3jx0EC-Y3c

    推荐文章