【发布时间】:2015-12-20 06:04:38
【问题描述】:
我正在考虑 React 的 Flux 架构,我想确定处理 Ajax 请求的最佳方式。请参见下图中的评论框示例。
整体架构很清晰,我担心的是:我们真的需要一个单独的存储来保存视图的私有状态,例如 Ajax 请求失败吗?
为什么我们有商店是因为数据可以被不同的视图重用。但是除了视图发起请求之外,网络结果是否也应该被其他视图重用?
ajax请求成功还是失败也是setState({loading: true/false})等视图的状态。而这个状态与请求的数据结果无关。私有加载状态可能与post、refresh、delete等不同的网络请求有关。我知道有些人建议为这种情况提供一个ErrorStore。但如果我们不开发无状态组件,我看不出有任何理由只将网络状态保存在单独的存储中。
所以在我的项目中我使用 Promise:
actionCreators.postComment({...})
.then(res => this.setState({loading: false, error: null}))
.catch(err => this.setState({loading: false, error: err}));
以上代码对应图片红色部分。
所以我的问题是:这种方法合理吗?还是 Redux/Reflux 有更好的方法?谢谢。
【问题讨论】: