何时在angular2中使用ngrx/effect

Sal*_*med 10 angular-services ngrx ngrx-effects angular

我有一个与api通信的anuglar2项目.最近,我决定集成ngrx/store来维护组件的状态,并遵循dump-smart组件架构.但是在继续前进的过程中,我读到了可以用于api请求的ngrx/effect.

在这里我的问题来了,为什么我应该使用ngrx/effect库,而不是从我的容器组件调用我的服务中的相应函数来执行api请求和成功调度操作以将返回的值保存在我的商店中.

ols*_*lsn 17

如果您的情况保持如此简单,那么您将不需要effect它.此外,它effect本身不会比调用您的服务方法更多.

简而言之:如果你的项目非常小并且没有很多功能,那么它只会让你编写更多的代码.

如果项目很大,它将帮助您构建数据流和项目组件.


何时使用效果:

当你想基于其他动作来触发一个动作(英语口语,你会称这是一个副作用effect,当你想添加一个通用的错误处理或者一个记录)或.

effect工作方式:effect侦听任何已定义的操作(例如LoadDataAction),然后执行一些处理并返回随后由存储处理并分发到reducer或其他一些操作的任何操作effect.

例:

  1. 分派LoadDataAction
  2. 一个effect(loadData $)被触发
  3. loadData $ - effect调用数据服务
  4. 加载数据失败
  5. loadData $ - effect返回LoadDataFailureAction

ngrx处理动作......

  1. LoadDataFailureAction可能被拾起:
    • 记录器效果(例如将消息发送到服务器)
    • 通过ui通知效果(例如向用户显示消息)
    • 和/或通过reducer(例如,持久化错误计数或删除状态中的某些内容)