状态未正确更新

时间:2015-05-08 04:29:09

标签: javascript reactjs

我有一个简单的代码用于我在状态中的输入:

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但会创建待处理的状态转换。可能是这个原因?如果是这样如何重写我的代码?

0 个答案:

没有答案