我有一个 React.js 应用程序,我正在重构它以使用 Flux 架构,并且正在努力弄清楚在坚持 Flux 模式的同时错误处理应该如何工作。
当前,当遇到错误时,会触发 jQuery 事件“AppError”,并且订阅此事件的通用错误处理帮助器会在用户屏幕上放置一条 Flash 消息,登录到控制台,并通过 API 调用报告它。好的是我可以从应用程序的任何部分以任何原因触发错误,并以一致的方式处理它。
我似乎无法弄清楚如何在 Flux 架构中应用类似的范例。这是我正在努力解决的两个特殊情况。
1) API 调用失败
我所有的 API 调用都是由动作创建者发出的,并且我使用承诺在失败时调度错误事件(IE 'LOAD_TODOS_FAILED')。商店看到这个事件并相应地更新它的状态,但我仍然没有我之前迭代的一般错误行为(通知等)。
可能的解决方案:
我可以创建一个绑定到 'LOAD_TODOS_FAILED' 操作的 ErrorStore,但这意味着每次我遇到新类型的错误时,我都需要将该操作显式添加到 ErrorStore,而不是自动处理所有错误。
2) Store 收到意外动作
这是我真正感到困惑的一个。我想处理当一个动作被分派到一个 Store 的情况下,这在 Store 的当前状态下没有意义。我可以处理 Store 中的错误以清理状态,但仍然可能想触发一个意外发生的错误。
可能的解决方案:
从商店发送一个指示错误的新操作。
我相信商店不应该调度操作(如果我错了,请告诉我),我仍然遇到与上述 API 错误相同的问题。
为订阅每个 Store 的错误处理创建一个 ControllerView
我可以在每个 store 上定义一个 errors 属性,然后让一个 View 监视每个 Store 并且只对 errors 属性进行操作。当 errors 属性不为 null 时,它可以调度新的操作等。缺点是我需要记住,每当创建新的 Store 时,我都需要将每个 Store 添加到此视图中,并且每个 Store 都必须有一个行为相同的错误属性方法。它也没有解决 API 调用失败的问题。
有没有人有适合 Flux 架构的通用错误处理程序的建议方法?
TL;博士
我需要处理大多数 Action Creators 和 Stores 中的错误。如何设置任何类型的通用错误都会发生的一致错误处理?