我有一个React.js应用程序,我正在重构使用Flux架构,我正在努力弄清楚错误处理应该如何工作,同时坚持Flux模式.
目前,当遇到错误时,会触发jQuery事件"AppError",并且订阅此事件的通用错误处理帮助程序会在用户屏幕上显示Flash消息,登录到控制台,并通过API调用进行报告.有什么好处是我可以从应用程序的任何部分以任何理由触发错误并以一致的方式处理它.
我似乎无法弄清楚如何在Flux架构中应用类似的范例.以下是我正在努力解决的两个特殊情况.
我的所有API调用都是由动作创建者创建的,并且我使用承诺在失败时调度错误事件(IE'LOAD_TODOS_FAILED').商店看到这个事件,并相应地更新它的状态,但我仍然没有我的上一次迭代(通知等)的一般错误行为.
可能的决议:
我可以创建一个绑定到'LOAD_TODOS_FAILED'操作的ErrorStore,但这意味着每次我遇到新类型的错误时,我都需要将该操作显式添加到ErrorStore,而不是自动处理所有错误.
这是我真正感到困惑的一个.我想处理一个动作被分派到商店的情况,因为商店的当前状态没有意义.我可以处理Store中的错误来清理状态,但仍然可能想要触发意外发生的错误.
可能的决议:
从商店发送指示错误的新操作.
我相信商店不会派遣行动(让我知道我是不是错了),而且我仍然遇到与上述API错误相同的问题.
为订阅每个商店创建一个用于错误处理的ControllerView
我可以在每个商店中定义一个errors属性,然后让View观察每个商店并仅对errors属性进行操作.当errors属性不为null时,它可以调度新的操作等.缺点是我需要记住每当创建新的时都将每个Store添加到该视图,并且每个商店必须具有行为相同的error属性办法.它也无法解决API调用失败问题.
有没有人有一个适合Flux架构的通用错误处理程序的建议方法?
我需要处理大多数Action Creators和Stores中的错误.如何为任何类型的一般错误设置一致的错误处理?
如果要避免在ErrorStore中列出每个错误操作,可以使用通用的APP_ERROR操作,并具有该操作的属性以更详细地描述它.然后,您的其他商店只需要检查这些属性,以查看该操作是否与它们相关.没有规则要求商店中的注册回调需要关注操作的类型,或仅关注类型 - 这通常是确定操作是否相关的最方便和一致的方式.
不要发出新动作来响应某个动作.这会导致调度内的调度错误,并导致级联更新.相反,确定应该提前调度的操作.如果有帮助,您可以在发出操作之前查询商店.
你的第二个解决方案听起来不错,但你提到的危险事情是"当错误属性不为空时,它可以发送新的操作等" - 再次,你不想发出动作来响应其他动作.这是Flux试图避免的痛苦之路.您的新控制器视图将只是从商店获取值并通过呈现正确的视图进行响应.
| 归档时间: |
|
| 查看次数: |
3355 次 |
| 最近记录: |