故障排除:Redux&;Redux开发工具--操作“;僵局行动没有出现。。。然后在下一个动作中同时出现

故障排除:Redux&;Redux开发工具--操作“;僵局行动没有出现。。。然后在下一个动作中同时出现,redux,redux-thunk,redux-devtools,redux-devtools-extension,Redux,Redux Thunk,Redux Devtools,Redux Devtools Extension,问题 我的redux应用商店中的操作似乎是一个接一个地记录阻塞。我正在迭代一组thunk,每个thunk调用一系列操作,以显示它们已经开始、成功等。当这种情况发生时,一个操作在redux开发工具中出现一秒钟,然后被擦除 如果我发布了另一个动作,那么所有的动作都会同时出现,就像集装箱船跟随给定的动作一样 在这个gif中,我连接到一个测试数据库,然后执行一些操作。我可以在控制台中看到这些操作,但不能在devTools中看到。然后,我通过屏幕上的按钮发布另一个动作,所有动作一次通过 我正在寻找变异状

问题 我的redux应用商店中的操作似乎是一个接一个地记录阻塞。我正在迭代一组thunk,每个thunk调用一系列操作,以显示它们已经开始、成功等。当这种情况发生时,一个操作在redux开发工具中出现一秒钟,然后被擦除

如果我发布了另一个动作,那么所有的动作都会同时出现,就像集装箱船跟随给定的动作一样

在这个gif中,我连接到一个测试数据库,然后执行一些操作。我可以在控制台中看到这些操作,但不能在devTools中看到。然后,我通过屏幕上的按钮发布另一个动作,所有动作一次通过

我正在寻找变异状态的实例,但所有还原程序都通过以下方式将状态分解为新对象:

let newState = {...state}
有什么建议吗

编辑:

  • 当我从按钮元素后面调度相同的操作时,它工作得很好。连接到事件发射器的事件侦听器正在调用日志干扰的代码。。。也许这与此有关

  • 调试之后,我将问题追溯到redux replaceReducer方法。在这个序列中我叫它三次。第一次和第二次调用工作正常,但在第三次调用时,存储停止接收操作

     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")
    
}

^^^
这段代码在前两次调用时打印动作,但在第三次调用时,它打印前两次动作,而不是第三次。

此错误是由于在同一线程内多次调用“replaceReducer”造成的。根据我现在的理解-如果在forEach循环中调用replaceReducer。。。你是冈纳,我过得不好

我的解决方案是创建一个包含多个reducer的函数,然后调用replaceReducer一次

愿未来的人们从这些知识中受益