我们正在使用react-connected-router
,在我们的 react 页面组件中,我们从服务器获取状态,并调度操作来更新 Redux 状态(我们只是使用钩子,没有 thunks 或 saga 中间件(。
但是,当我们使用 redux devtools 进行时间旅行调试时,当我们倒回相应的状态时,组件会再次调度动作......
我不想在进行时间旅行调试时调度新操作。
老实说,除了在我的组件中渲染之外,我从不想做任何事情,我通常在事件处理程序中做异步获取(如点击(,但这种方法不适用于 React Router。理想情况下,当用户更改浏览器历史记录时,应该触发某些事件,并且异步获取应该通过处理该事件来完成,而不是在呈现页面组件时完成,但我找不到有关如何执行此操作的文档。
我的一般问题是,如何编写与 devtools 时间旅行调试器很好地配合的代码,以便在重播状态时不会调度新操作?
据我了解,像 Redux thunk 或 saga 这样的中间件也不能解决这个问题,除非开发工具在进行时间旅行调试时完全忽略调度的 Redux thunk。也许已经是这种情况了,我应该使用这些中间件
似乎 Redux 开发工具可以选择lock
新操作被调度!
这篇博客中有解释
因此,准则似乎是只触发这些操作,并让开发人员手动锁定更改。
我对此不是 100% 满意,只是在组件渲染期间调度动作作为副作用感觉不对,但就这样吧。