具有多个ajax请求的Flux

时间:2015-04-15 22:48:48

标签: ajax reactjs reactjs-flux flux

我有一个React组件<Profile/>,用于显示当前选定的用户。

componentDidMountcomponentWillUpdate后,我会检查用户的Flux商店。

如果用户丢失,或者用户存在,但其userId与网址中的userId不匹配,我会调用Flux操作getUser(userId)

问题是,由于多次调用componentWillUpdate,可以多次触发此调用。

我的临时解决方法是跟踪由userId键入的待处理的ajax请求,如果已经在进行中,我就不会发出另一个请求。

但是,这感觉很麻烦,我想知道这是一个常见问题(和推荐的解决方案),还是我的架构需要改进。

2 个答案:

答案 0 :(得分:3)

您不应该在componentWillUpdate中调用Flux商店。 componentWillUpdate用于渲染之前需要做的任何准备工作。当React调用componentWillUpdate时,它已经确定某些内容(props或state)发生了变化,并且该组件应该更新,因此不是获取更多数据的时间。

您应该在componentWillReceiveProps中调用Flux存储(假设用户ID作为prop传递给组件)。

答案 1 :(得分:-1)

您要做的是应用程序逻辑而不是查看逻辑。因此,最好将逻辑移动到操作/存储(请参阅flux体系结构以了解有关存储的更多信息),并在获得更新视图组件的响应后发出事件。