我的loggerService,我需要捕获reducer中的所有错误,并通过我的服务将其发送到服务器。
我该怎么办?我知道减速器应该是一个纯函数,但仍然有任何想法吗?
我需要添加reduser try catch
case actions.GAMES_LOADED{
......
try{}
catch(err){
this.loggerService.error(err);
}
}
或者也许在减速机中扔东西并在某个地方捕捉它......
非常感谢
答案 0 :(得分:4)
简短回答:你没有。
为什么? - reducer只负责更新商店,不执行任何业务逻辑或验证数据 - 到达商店的任何数据都应该是已经有效,只是存储/更新/从商店中删除。
可能的解决方案:您应该在负责提取/创建数据的effect或某些服务中执行此类操作。< / p>
答案 1 :(得分:0)
我不同意reducer仅负责更新商店。它负责更新应用程序state..store以及UI状态。因此,在这种情况下,reducer有责任更新应用程序中的错误状态。通过某些错误操作重定向对错误的影响,reducer可以更新错误状态。但是在这种情况下,相同的reducer应该在收到任何成功动作时消除错误状态。但我并不是说这是最佳做法。
答案 2 :(得分:0)
如果将“ loadingMessage”项添加到应用程序状态,则可以在此化简器中将该状态设置为空或消息。然后,组件可以使用存储选择器读取此信息,如果不为空,则记录日志或生成对话框,或者您希望对此状态执行任何操作。