具有多个 ajax 请求的 Flux

Flux with multiple ajax requests

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

componentDidMountcomponentWillUpdate 之后,我检查了用户的 Flux 存储。

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

问题是,由于componentWillUpdate被多次调用,这个调用可能会被触发多次。

我的临时修复是跟踪未决的 ajax 请求,由 userId 键入,如果一个已经在进行中,我不会发出另一个。

虽然这感觉很老套,我想知道这是否是一个常见问题(和推荐的解决方案)或者我的架构是否需要改进。

您不应该在 componentWillUpdate 中调用 Flux 存储。 componentWillUpdate 用于渲染前需要做的任何准备工作。当 React 调用 componentWillUpdate 时,它已经确定某些东西(道具或状态)已经改变,并且组件应该更新,所以现在不是获取更多数据的时候。

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

您尝试做的是应用程序逻辑而不是视图逻辑。因此,最好将您的逻辑移动到 action/store(参考通量架构以了解更多关于商店的信息)并在收到响应后发出一个事件,这将更新视图组件。