这是我的示例代码,我想我已经找到了答案。
https://jsfiddle.net/yoyohoho/Lo58kgfq/1/
在的jsfiddle示例代码。输入字段是必填字段。
如果该字段中没有任何内容,则应该禁用该按钮。
问题是,如果您键入某个内容并将其删除,则按钮仍处于活动状态,直到您键入另一个键,这是下一个循环。
我用input1Err()
checkErr(){
if(this.state.input1Err == false){
this.setState({formErr: false });
}else{
this.setState({formErr: true });
}
}
,以确定是否应formError在checkErr被禁用这是什么原因,之所以视图改变下一个周期发生的。 因为setState是异步的
我正在使用this.state.input1Err来确定formErr,它可能还没有在if语句之前被更改。
所以我改为下面的封闭,这解决了我的问题。
checkErr(){
const self = this;
(function(j){setTimeout(function(){
if(self.state.input1Err == false){
self.setState({formErr: false });
}else{
self.setState({formErr: true });
}
},10)})(self);
}
这似乎是一个快速修复。但是,如果有一个Ajax调用并且连接到state.input1Err。有没有办法我可以看这个变量,所以当它改变完成,我可以有某种回调?
谢谢