6

在我们的 Angular 应用程序中,我们计划使用 Redux,但决定只使用它来管理至少由两个组件共享的数据。仅一个组件使用的数据将直接获取,无需使用 Redux。例如,假设一个组件必须显示一个值列表并且这些值不与任何其他组件共享,那么我们将使用服务获取这个列表。但是在获取这些数据时,它可能会影响存储中的一些其他状态,例如它可能会调度一些动作,如 NETWORK_REQUEST_SENT、NETWORK_REQUEST_COMPLETED,以便微调器/覆盖组件可以更改其显示。

现在的问题是代码的哪一部分应该负责调度这些操作。

  • 场景 1:从服务中获取数据的容器组件可以调度这些操作,但我认为它不属于这里。
  • 场景 2:发起 HTTP 调用的服务可以调度这些操作,这意味着服务必须订阅 HTTP 可观察对象并为组件返回自己的可观察对象。
  • 场景 3:可以在 Redux 中间件中完成,但是我们必须调度一个操作来获取值列表,这意味着值列表必须存储在存储中,这是我们不想要的。
  • 场景 4:正如这里提到的,我们可以创建一个抽象层,但感觉就像不需要中间件一样。
4

1 回答 1

2

如果您正在使用HttpClientModule,您可以注册一个拦截器,如https://medium.com/@ryanchenkie_40935/angular-authentication-using-the-http-client-and-http-interceptors-2f9d1540eb8中所述

您可以在调用NETWORK_REQUEST_SENT它时调用它,并NETWORK_REQUEST_COMPLETED最终请求完成时调用一个操作。那么就没有必要再有另一个 observable 了。

于 2017-11-15T11:57:58.780 回答