我有一个React.js应用程序,我正在重构它来使用Flux体系结构,并且我很难弄清楚在坚持Flux模式的同时,错误处理应该如何工作。
当前,当遇到错误时,会触发一个jQuery事件'AppError‘,订阅此事件的一般错误处理助手会将一个Flash消息放到用户的屏幕上,登录到控制台,并通过API调用报告它。更好的是,我可以从应用程序的任何部分触发一个错误,并以一致的方式处理它。
我似乎不知道如何在Flux体系结构中应用类似的范例。下面是我正在努力解决的两种特殊情况。
1) API调用失败
我所有的API调用都是从动作创建者发出的,我承诺在失败时发出一个错误事件(IE 'LOAD_TODOS_FAILED')。商店会看到这个事件,并相应地更新它的状态,但是我仍然没有上一次迭代(通知等)中的通用错误行为。
可能的解决办法:
我可以创建一个绑定到‘ErrorStore’操作的LOAD_TODOS_FAILED,但这意味着每次我有一个新的错误类型时,我都需要显式地将该操作添加到ErrorStore中,而不是让所有错误都被自动处理。
2) Store收到意外的操作
这才是我真正困惑的地方。我想要处理的情况是,当一个动作被分派到一个没有意义的商店时,考虑到该商店的当前状态。我可以在Store中处理错误以清理状态,但可能仍然希望触发意外发生的错误。
可能的决议:
是否有人建议使用符合Flux体系结构的通用错误处理程序?
TL;DR
我需要处理大多数Action和Stores中的错误。如何设置对任何类型的泛型错误都会发生的一致错误处理?
发布于 2015-01-15 17:35:44
如果要避免列出ErrorStore中的每个错误操作,则可以有一个泛型APP_ERROR操作,并具有更详细描述该操作的属性。然后,您的其他商店只需检查这些属性,以确定该操作是否与它们相关。在商店中注册的回调不需要集中于操作的类型,或者只关注类型--这通常是确定一个操作是否相关的最方便和一致的方法。
不要发布新的行动来回应一个行动。这将导致分派内部调度错误,并将导致级联更新。相反,确定应该提前发送哪些操作。您可以在发出操作之前查询商店,如果这有帮助的话。
第二个解决方案听起来不错,但您提到的危险之处是“错误属性为非空时,它可能会分派新操作,等等”--同样,您不希望发出响应其他操作的操作。这就是Flux寻求避免的痛苦之路。您的新控制器视图只需从商店中获取值,并通过显示正确的视图来响应。
https://stackoverflow.com/questions/27957460
复制相似问题