React.js:你用一个不可调用的回调调用`setState`

时间:2015-07-14 07:36:33

标签: javascript reactjs

这是我的一段代码,它可以正常工作(添加记录),但在添加后会抛出错误:

  

未捕获错误:不变违规:enqueueCallback(...):你打过电话   setPropsreplacePropssetStatereplaceState或   forceUpdate,其回调函数不可调用。

handleSubmit: function(e) {
    e.preventDefault();
    return $.post('', {page: this.state},
      function(data) {
        this.props.handleNewPage(data);
        return this.setState(this.getInitialState(), 'JSON');
      }.bind(this)
    );
  }

目前没有路线。有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:32)

setState的第二个(可选)参数是回调函数,而不是字符串。您可以传递一个操作完成后将执行的函数。

答案 1 :(得分:1)

实际上你调用getInitialState而不是在行return this.setState(this.getInitialState(), 'JSON');上提供对函数本身的引用,而第二个参数永远不应该只是一个回调函数。

this.setState期望一个应该将状态对象作为单个参数返回的函数,或者一个用于合并当前状态的对象(加上可选的回调作为第二个参数,以便在设置状态之后运行)。因此,要么只提供一个返回新状态的函数,要么提供一个当前状态应该与第一个参数合并的对象,以及在将状态设置为第二个参数后执行的回调。

this.setState(this.getInitialState)this.setState(this.getInitialState())this.setState(newState, callback)

查看API here中的签名。