我对setState回调有一个奇怪的行为,希望有人可以提供帮助。回调就是没有被解雇。
以下是我的工作:
this.setState(
(prevState, props) => {
return { first: obj, questions: [] }
},
this.changeStateCb
);
由于某种原因,永远不会调用changeStateCb函数。当我将其更改为:
时,同样的问题
this.setState(
(prevState, props) => {
return { first: obj, questions: [] }
},
() => console.log(this.state)
);
我刚从v15.x更新到16.2.0
答案 0 :(得分:1)
你有演示吗?我只是提出了一个简单的working example,它似乎在React 16.2.0
下运行得很好。请注意,应使用可选回调sparingly。正如文档所提到的,它将在setState
完成后执行并重新呈现组件。因此,在this.changeStateCb
中进行逻辑的更好位置是componentDidUpdate
。
答案 1 :(得分:1)
我只是遇到了同样的问题。回调中的简单console.log('test')
甚至无法运行。原来,我必须删除构建目录中的/ dist文件夹。我正在使用Type Script和Webpack,并已从.net核心模板升级。
答案 2 :(得分:0)
有同样的问题。回调不会被调用。我将其追溯到React的最小代码,并且enqueueSetState的函数不接受回调,即使它是从内部React代码传入的也是如此...所以代码解释了为什么不调用它。但这曾经在React 15.x中很好用-发生了什么...我正在尝试React 16.8.4