В вашем коде несколько проблем.Прежде всего this.setState
является асинхронным, и поэтому вы не можете сказать, когда он действительно выполняется.
Так что, если вы вызываете
this.setState({validated: false},() => {});
, вы не можете полагать, что после этого this.state.validated
немедленно false.
Поэтому после того, как вы позвоните this.setState
, чтобы сделать validated == false
, а затем проверьте:
if(this.state.validated)
{
// some other operation
this.setState({validated: true},() => {});
}
Это может быть либо истинным, либо ложным.
Но в вашем коде вы извлекаете validated
(что вы используете в условии if) в начале вашего метода.Это означает, что validated
не изменится при изменении this.state
.
Возможно, вы захотите использовать уже добавленный обратный вызов (() => {}
), чтобы выполнить какое-то другое действие после изменения состояния или просто использовать обычныйДействительный вместо того, что связано с государством.
Как:
tmp = true;
for-loop {
if(should not validate) {
tmp = false;
this.setState({validated: false});
break;
}
if(tmp) {
this.setState({validated: true},() => {});
}