【发布时间】:2016-08-19 02:06:19
【问题描述】:
我正在学习 Redux,并且遇到了与确保状态树的分支(分支 A)在我更新另一个分支(分支 B)之前完成更新有关的问题。分支 B 依赖于分配给分支 A 中新更新项目的 ID,因此我希望分支 B 的更新函数在更新分支 A 的调度函数完成后调度。我有多个对应于各个分支的减速器,我正在使用 combineReducers 来组合它们。
我使用以下命令从组件调度更新分支 A 的操作:
/* update Branch A */
this.props.dispatch(actions.addCriterion(this.state));
在下一行代码中按顺序调度更新分支 B 的操作会导致分支 B 看不到分支 A 调度导致的更新状态信息。
/* update Branch B */
this.props.dispatch(actions.completeScoreGrid(this.props.alternatives, this.props.criteria));
但是,如果我使用 setTimeout 并在 A 被调度后稍等片刻,然后再调用 B,那么一切都会按预期进行。在这种情况下,状态更新已完成,B 看到了它应该看到的一切
/* update Branch B after a 1 second pause */
var that = this;
setTimeout(function() {
that.props.dispatch(actions.completeScoreGrid(that.props.alternatives,
that.props.criteria));
}, 1000);
但是,我确信使用设置超时不是正确的做法。我看过 redux-thunk、redux-promise、redux-promise-middleware 和 redux-saga,但我不确定其中哪一个是解决这个问题的合适工具,或者它们中的任何一个是否是合适的工具.解决此类问题的正确方法是什么?
【问题讨论】:
标签: redux