具有多个 ajax 请求的 Flux
Flux with multiple ajax requests
我有一个 React 组件,<Profile/>
,用于显示当前选择的用户。
在 componentDidMount
和 componentWillUpdate
之后,我检查了用户的 Flux 存储。
如果用户丢失,或者如果用户存在但其 userId
与 url 中的 userId
不匹配,我调用 Flux 操作 getUser(userId)
.
问题是,由于componentWillUpdate
被多次调用,这个调用可能会被触发多次。
我的临时修复是跟踪未决的 ajax 请求,由 userId
键入,如果一个已经在进行中,我不会发出另一个。
虽然这感觉很老套,我想知道这是否是一个常见问题(和推荐的解决方案)或者我的架构是否需要改进。
您不应该在 componentWillUpdate
中调用 Flux 存储。 componentWillUpdate
用于渲染前需要做的任何准备工作。当 React 调用 componentWillUpdate
时,它已经确定某些东西(道具或状态)已经改变,并且组件应该更新,所以现在不是获取更多数据的时候。
您应该改为在 componentWillReceiveProps
中调用 Flux 存储(假设用户 ID 作为 prop 传递给组件)。
您尝试做的是应用程序逻辑而不是视图逻辑。因此,最好将您的逻辑移动到 action/store(参考通量架构以了解更多关于商店的信息)并在收到响应后发出一个事件,这将更新视图组件。
我有一个 React 组件,<Profile/>
,用于显示当前选择的用户。
在 componentDidMount
和 componentWillUpdate
之后,我检查了用户的 Flux 存储。
如果用户丢失,或者如果用户存在但其 userId
与 url 中的 userId
不匹配,我调用 Flux 操作 getUser(userId)
.
问题是,由于componentWillUpdate
被多次调用,这个调用可能会被触发多次。
我的临时修复是跟踪未决的 ajax 请求,由 userId
键入,如果一个已经在进行中,我不会发出另一个。
虽然这感觉很老套,我想知道这是否是一个常见问题(和推荐的解决方案)或者我的架构是否需要改进。
您不应该在 componentWillUpdate
中调用 Flux 存储。 componentWillUpdate
用于渲染前需要做的任何准备工作。当 React 调用 componentWillUpdate
时,它已经确定某些东西(道具或状态)已经改变,并且组件应该更新,所以现在不是获取更多数据的时候。
您应该改为在 componentWillReceiveProps
中调用 Flux 存储(假设用户 ID 作为 prop 传递给组件)。
您尝试做的是应用程序逻辑而不是视图逻辑。因此,最好将您的逻辑移动到 action/store(参考通量架构以了解更多关于商店的信息)并在收到响应后发出一个事件,这将更新视图组件。