我有一个与api通信的anuglar2项目.最近,我决定集成ngrx / store来维护组件的状态,并遵循dump-smart组件架构.但是在继续前进的过程中,我读到了可以在api请求中使用的ngrx / effect.
在这里,我的问题来了,我为什么要使用ngrx /效果库,只是从我的容器组件调用我的服务中的相应函数来执行api请求和成功调度操作以将返回的值保存在我的商店中.
如果您的情况保持如此简单,那么您将不需要它的效果.此外,效果本身不会比调用您的服务方法更多.
简而言之:如果你的项目非常小并且没有很多功能,那么它只会让你编写更多的代码.
如果项目很大,它将帮助您构建数据流和项目组件.
何时使用效果:
当你想根据另一个动作触发一个动作时(用英语口语你会称之为副作用)或者你想要添加一般的错误处理或者记录.
效果的工作方式:效果侦听任何已定义的操作(例如LoadDataAction),然后执行一些处理并返回随后由存储处理并分发到reducer或其他效果的任何操作.
例:
>分派LoadDataAction
>触发效果(loadData $)
> loadData $-effect调用数据服务
>加载数据失败
> loadData $-effect返回一个LoadDataFailureAction
ngrx处理行动……
>可以通过以下方式获取LoadDataFailureAction:
>记录器效果(例如,向服务器发送消息)>通过ui通知效果(例如向用户显示消息)>和/或通过reducer(例如,持久化错误计数或从状态中删除某些内容)