小编nid*_*idu的帖子

React Flux实现调度链

我正在尝试使用React与Flux架构,并偶然发现了一个我无法处理的限制.问题如下:

  1. 有一家商店可以收听活动.事件有对象ID.我们需要在需要时获取对象并将其选中.
  2. 如果商店没有具有此ID的对象 - 则查询它.在回调中,我们将另一个事件分派给负责选择的商店.
  3. 如果商店有对象 - 我想发送选择事件,但我不能因为调度正在进行中.

到目前为止,我提出的最佳解决方案是将内部调度包装起来setTimeout(f, 0),但它看起来很吓人.

实际上问题非常普遍 - 如果每个新的调度基于先前的调度处理结果,我应该如何在没有调度嵌套的情况下组织调度链(不违反当前的Flux限制).

有没有人有解决这些问题的好办法?

var selectItem(item) {
    AppDispatcher.dispatch({
        actionType: AppConstants.ITEM_SELECT,
        item: item
    });
}

// Item must be requested and selected.
// If it's in store - select it.
// Otherwise fetch and then select it.
SomeStore.dispatchToken = AppDispatcher.register((action) => {
    switch(action.actionType) {
        case AppConstants.ITEM_REQUESTED:
            var item = SomeStore.getItem(action.itemId);
            if (item) {
                // Won't work because can't dispatch in the middle of dispatch
                selectItem(item);
            } else {
                // …
Run Code Online (Sandbox Code Playgroud)

javascript flux reactjs

11
推荐指数
1
解决办法
1989
查看次数

标签 统计

flux ×1

javascript ×1

reactjs ×1