如何处理Reducer中的错误?

时间:2017-01-03 13:52:45

标签: angular rxjs ngrx

我的loggerService,我需要捕获reducer中的所有错误,并通过我的服务将其发送到服务器。

我该怎么办?我知道减速器应该是一个纯函数,但仍然有任何想法吗?

我需要添加reduser try catch

    case actions.GAMES_LOADED{
       ......
       try{}
       catch(err){
       this.loggerService.error(err);
    }
}

或者也许在减速机中扔东西并在某个地方捕捉它......

非常感谢

3 个答案:

答案 0 :(得分:4)

简短回答:你没有。

为什么? - reducer只负责更新商店,执行任何业务逻辑或验证数据 - 到达商店的任何数据都应该是已经有效,只是存储/更新/从商店中删除。

可能的解决方案:您应该在负责提取/创建数据的effect或某些服务中执行此类操作。< / p>

答案 1 :(得分:0)

我不同意reducer仅负责更新商店。它负责更新应用程序state..store以及UI状态。因此,在这种情况下,reducer有责任更新应用程序中的错误状态。通过某些错误操作重定向对错误的影响,reducer可以更新错误状态。但是在这种情况下,相同的reducer应该在收到任何成功动作时消除错误状态。但我并不是说这是最佳做法。

答案 2 :(得分:0)

如果将“ loadingMessage”项添加到应用程序状态,则可以在此化简器中将该状态设置为空或消息。然后,组件可以使用存储选择器读取此信息,如果不为空,则记录日志或生成对话框,或者您希望对此状态执行任何操作。