我的 redux 商店中的问题 操作似乎彼此卡住了。我正在遍历一组 thunk,每个 thunk 都会调用一些动作来显示它们已经开始、成功等。当这种情况发生时,一个动作会在 redux 开发工具中出现一秒钟,然后被删除。
如果我发布另一个动作,那么所有动作都会同时出现,就像集装箱船遵循既定的规定。
在这个 gif 中,我连接到一个测试数据库,然后调度了一些操作。我可以在控制台中看到这些操作,但不是 devTools。然后,我通过屏幕上的按钮发布另一个动作,所有动作都立即通过。
我正在寻找突变状态的实例,但所有减速器都通过以下方式将状态分解为一个新对象:
let newState = {...state}
有小费吗?
编辑:
当我从按钮元素后面调度相同的操作时,它工作得很好。连接到事件发射器的事件侦听器正在调用日志干扰的代码......也许这与它有关?
经过调试,我已经将问题追溯到redux replaceReducer方法。我按此顺序调用了 3 次。第一次和第二次调用工作正常,但在第三次 - 商店停止接收操作。
store.injectReducer = (key, asyncReducer) => { storeTools.dispatchAction({type:"STORE_INJECT_REDUCER_" + key}) store.asyncReducers[key] = asyncReducer; let combinedReducers = createReducer(store.asyncReducers); storeTools.dispatchAction({type:"STORE_INJECT_REDUCER_" + key}) store.replaceReducer(combinedReducers); storeTools.dispatchAction({type:"RESET"}) console.log("replaceReducer")
}
^^^ 此代码打印前 2 次调用的操作,但在第三次,它打印前两个操作,但不打印第三次。