我有一個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方法檢查,然後調用其中一個方法。重點是:從那裏改變狀態會導致錯誤。 –