我正在从组件渲染功能中调用thunk。如果在初始应用程序加载调用thunk加载的组件时,它工作正常。但是,如果我在不同的路由加载应用程序然后转换到呈现调用thunk的组件的路由,我会收到以下错误:
警告:setState(...):在现有状态期间无法更新 过渡(例如在
render
或其他组件内 构造函数)。渲染方法应该是道具的纯函数 州;构造函数的副作用是反模式,但可以移动 到componentWillMount
。
thunk改变了应用程序中任何组件都没有使用的redux存储状态,只是通过getState()在thunk中使用来做一些条件逻辑。如果我从thunk中删除调度actionCreator代码,则错误消失。
我缺少什么?
答案 0 :(得分:2)
您只需要记住基本规则,您应该在组件的渲染功能中永远不会更改状态。相同的规则适用于组件状态以及redux存储状态。您在控制台上看到的警告是由您在渲染中调度的操作引起的。 重构您的代码,以便所有调度和状态更改都发生在其他生命周期方法中。