我有一个Page.jsx使用Form.jsx组件状态有效性继续。要做到这一点,我在Form.jsx
这样做:更新母公司通过回调道具儿童(React.js)
// ...
allInputsAreValid: function() {
return _.all(this.state.inputsValidation, function (inputsValidation) {
return inputsValidation.error === false;
});
}
// ...
然后,在render
方法Form.jsx
:
if (this.allInputsAreValid()) {
this.props.isValid();
} else {
this.props.isInvalid();
}
最后,方法enable
/disableButton
(上Form.jsx):
// ...
enableButton: function() {
this.setState({
canSubmit: true
});
},
disableButton: function() {
this.setState({
canSubmit: false
});
}
//...
更改这些方法中的状态,控制台thr允许错误:
Uncaught Error: Invariant Violation: setState(...): Cannot update during an existing state transition (such as within
render
). Render methods should be a pure function of props and state.
为什么?怎么修?
'
'正在使用'Page.jsx'中的'enableButton' /'disableButton'。当表单有效时,通过allInputsAreValid方法检查,然后调用其中一个方法。重点是:从那里改变状态会导致错误。 –