ReactJs setState回调不起作用

时间:2018-03-16 16:09:37

标签: javascript reactjs

我对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

3 个答案:

答案 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