我有一个简单的代码用于我在状态中的输入:
validateForm2: function () {
var formIsValid = true;
for (var i = 0; i < this.state.inputs.length; i++) {
var currentInput = this.state.inputs[i];
var inputValue = this.state[currentInput.name];
if (!currentInput.validate(inputValue)) {
formIsValid = false;
this.makeInvalid(currentInput.name);
}
}
return formIsValid;
},
makeInvalid
调用其他方法显示错误消息:
makeInvalid: function (elemName) {
...
this.showValidationError(inputs[i].validateMessage);
...
}
这是showValidtionMessage
:
showValidationError: function (message) {
var summary = this.state.validationSummary + message;
this.setState({
validationSummary: summary
});
}
当我有两个错误showValidationError
被调用两次并且在调试器中我看到有两个不同的消息来到该函数,但validationSummary
只有一个消息(第二个)。我不知道为什么。此外,我尝试在console.log(this.state.validationSummary)
之后编写setState
,在控制台中,我在第一次调用后得到空字符串。哪里出错?
PS。我已阅读文档,并写有setState()
不会立即改变this.state
但会创建待处理的状态转换。可能是这个原因?如果是这样如何重写我的代码?