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