这是我的一段代码,它可以正常工作(添加记录),但在添加后会抛出错误:
未捕获错误:不变违规:enqueueCallback(...):你打过电话
setProps
,replaceProps
,setState
,replaceState
或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)
);
}
目前没有路线。有人可以帮我解决这个问题吗?
答案 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中的签名。