【发布时间】:2015-09-05 19:03:33
【问题描述】:
我正在使用带有 Flux 架构的 react js,但无法解决影响多个商店的异步请求问题。我有一个表单存储和一个结果存储。提交表单组件向 results 存储(而不是在结果存储中注册的调度程序)发送一个操作,该操作向外部 api 触发 ajax 请求,该 api 根据序列化的表单信息(来自我的结果存储)。此响应会填充结果存储,从而有效地初始化结果组件状态。这一切都按预期工作。
当表格中有错误时,问题就来了。如果有错误(但仍有 200 个响应代码)通过 api 发送给我一个错误响应对象。问题是,我在我的结果存储中,需要将这些错误发送到表单存储。在flux kata之后,需要一个动作来更新表单存储,但从存储中触发一个动作似乎是不对的。
这是我要去的通量周期
FormComponent -->
ResultsAction.fetchResults(relaventFormData) -->
ResultStoreDAL.fetchResults -->
$.ajax.success: if (response.errors){
//update the FormStore with response.errors
}
FormComponent 从 FormStore 获取状态(有错误状态)
ResultsComponent 从 ResultsStore 获取状态
ResultsStore 通过来自 ResultsStoreDAL 的 ajax 请求使用非默认(空)数据进行初始化(这是一个私有对象,与 ResultsStore 在同一个文件中)
在 ajax 成功中,如果有错误,则使用返回的结果更新结果存储,需要使用表单错误更新 FormStore,因为错误与结果无关。
TL;DR 我有两家店。我通过一个动作和 $.ajax.success 发出一个 ajax 请求,如果没有验证错误,我更新一个商店,如果有验证错误我更新另一个商店。假设我不能使用前端验证来防止错误,那么这个分支逻辑应该放在哪里,因为据我所知,从商店调用操作不是最佳实践。
【问题讨论】:
标签: javascript reactjs reactjs-flux