【问题标题】:NGRX handling errors for getting / creating / deletingNGRX 处理获取/创建/删除错误
【发布时间】:2017-03-27 10:31:03
【问题描述】:

我有一个减速器,它当前存储product 的状态。我有当前的状态结构:

{
    draft: {},
    loading: false,
    error: false
}

我的问题是,当用户创建/删除产品时,我如何支持处理错误?我不想使用相同的 loading / error 属性来获取/创建/删除 - 它们可能需要同时发生。我最好创建单独的减速器,例如createProductReducer/deleteProductReducer/getProductReducer,或者可能将错误/加载到自己的errorReducer/'loadingReducer`中?

【问题讨论】:

    标签: javascript angular ngrx ngrx-effects


    【解决方案1】:

    作为一个基本的经验法则:reduce 不包含任何逻辑并且包含(在大多数情况下)语义相关的数据。

    简而言之:我不建议您将 productReducer 拆分为多个减速器。

    其次,我建议您重新考虑数据流,如果您真的需要将一次性事件(在您的情况下为错误)作为应用程序状态的一部分。在大多数情况下,这不是必需的。

    这是我通常的处理方式:

    错误: 任何外部操作(REST、db-calls 等...)都是通过调用服务方法的效果来完成的。如果发生错误 - 效果返回一个动作(例如ERROR_ACTION),仅由某些根组件处理以显示错误(通过actions$.ofType(ERROR_ACTION)...) - 没有减速器或效果监听此动作(除非有一些日志记录- 涉及服务)。

    正在加载:有一个减速器 (uiReducer),它有一个加载计数器(加载事件开始:+1;加载事件完成/错误:-1)和一个根-只要计数 > 0,组件(加载指示器)就可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      • 2019-01-17
      • 1970-01-01
      • 2021-02-25
      • 2011-02-27
      • 2018-10-24
      相关资源
      最近更新 更多