我目前正在使用React进行我工作的项目,并且我正在努力将状态与我正在创建的形式绑定。所以我有这个:
getInitialState: function() {
return {
proofDivulgation: false,
proofDivulgationFedex: false,
proofDivulgationMail: false,
noticeRecidivism: false,
noticeRecidivismFedex: false,
noticeRecidivismEmail: false,
fedexAccount: '',
emergyContact: false
};
每当我修改一个复选框时,我想更改那些布尔值(这些布尔值应该与复选框的选中值相同)。 我也得到了这个React组件
<Toggle defaultChecked={this.state.proofDivulgation} onChange={this.handleCheckboxChange(this.state.proofDivulgation)} />
这是附加到onChange事件的方法:
handleCheckboxChange: function(booleanToSwitch){
console.log(booleanToSwitch);
this.replaceState({booleanToSwitch : true})
},
给我这个错误:replaceState(...): Cannot update during an existing state transition (such as withinrender). Render methods should be a pure function of props and state.
我可以做任何解决方法吗?我只需要一个基本函数,它将反转作为参数传递的状态的布尔值
答案 0 :(得分:1)
您正在立即调用该函数,而不是在更改时。
render
; onChange
参数; onChange
; 您的代码所做的是将this.handleCheckboxChange(this.state.proofDivulgation)
的返回值设置为onChange
的回调。
你需要的是:
handleCheckboxChange: function(booleanToSwitch) {
return function(event) {
console.log(booleanToSwitch);
this.replaceState({booleanToSwitch : true})
};
},
我也很确定你需要
this.state[booleanToSwitch] = true;
代替。