【问题标题】:NgRx: Correct way to dispatch an action with data dependencyNgRx:派发具有数据依赖性的动作的正确方法
【发布时间】:2020-06-09 01:52:10
【问题描述】:

目前,在我使用 NgRx 的项目中,I have a facade 包含一些功能:

LoadMyData()
{
    dispatch(MyActions.LoadMyDataAction({ SomeDependentData }))
}

我也有

  myDependentData$ = this.store.pipe(
    select(MySelectors.GetMyData)
  );

myDependentData$ 获取值并将值传递给SomeDependentData 的正确方法是什么?或者这个设计应该有一些改进?

我的一位同事说我应该实现一个效果,它可以捕获我的操作并解析选择器,然后将解析后的值提供给同一个操作,这种方法可能/好/坏吗?

【问题讨论】:

  • 我会在没有负载的情况下调度 LoadMyDataAction() 并在减速器级别解决依赖关系。
  • 谢谢。所以在这个级别应该没有依赖,而是让reducer来做粘合?
  • 这是灰色区域。您可能会争辩说这是一个副作用,因此您应该使用@ngrx/effects,但是根据设计效果应该只关心从服务器获取外部数据。
  • 另一方面,您已经在实现外观模式,它已经保存了您需要的依赖数据。只要您不在组件级别执行此操作,就可以了。如果代码中有太多抽象,可读性和可维护性就会受到影响。

标签: angular rxjs ngrx


【解决方案1】:

取决于,使用 selector in an effect 有效。 另一种选择是在模板中解开选择器的值(使用async 管道)并将其传递给加载方法:

LoadMyData(data: any)
{
    dispatch(MyActions.LoadMyDataAction({ SomeDependentData, extra: data }))
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2021-01-14
    • 2016-09-15
    • 2017-04-14
    • 2014-07-17
    • 1970-01-01
    • 2019-09-16
    相关资源
    最近更新 更多