我不知道我在哪里犯错,但这似乎很奇怪。当我切换ckeckbox时,我要在数组中添加项目,并且根据该数组,我希望我的按钮是否被禁用。如果为空,则禁用,否则为活动。项目肯定会添加到数组中。添加时它确实会激活一次,但是如果我取消选中它,它就不会变成双倍。可能是什么问题?
print (df)
date
0 01-06-70
1 01-06-69
2 01-06-68
3 01-06-67
df['date'] = pd.to_datetime(df['date'].str.replace(r'-(\d+)$', r'-19\1'))
print (df)
date
0 1970-01-06
1 1969-01-06
2 1968-01-06
3 1967-01-06
答案 0 :(得分:2)
根据您的代码,我认为您应该检查this.state.arrayOfStatusId && this.state.arrayOfStatusId.length
。因为如果arrayOfStatusId
是aray,它将始终评估true
,从而始终导致isButtonActive
false
。
activateButton () => {
// arrayOfStatusId is an array
if (this.state.arrayOfStatusId && this.state.arrayOfStatusId.length) {
this.setState({
isButtonActive: false,
})
} else{
this.setState({
isButtonActive: true,
})
}
}
<Checkbox
onClick={() => this.selectAllRespondents()}
onChange={this.activateButton}
/>
<Button disabled={this.state.isButtonActive}>
ADD
</Button>
此外,如果您正在使用activateButton
函数来更改this.state.isButtonActive
的值,并且该值仅用作Button
的支持,则还可以删除activateButton
函数:
<Checkbox
onClick={() => this.selectAllRespondents()}
/>
<Button disabled={this.state.arrayOfStatusId && this.state.arrayOfStatusId.length}>
ADD
</Button>
答案 1 :(得分:0)
您的if语句始终为true。 bz这是数组, 您需要检查array.length以测试数组是否为空
state = {
isButtonActive : false
}
activateButton() {
// arrayOfStatusId is an array
if (this.state.arrayOfStatusId.length> 0) {
this.setState({
isButtonActive:true,
})
} else{
this.setState({
isButtonActive:false,
})
}
}
<Checkbox
onClick={() => this.selectAllRespondents()}
onChange={() => this.activateButton()}
/>
<Button disabled={isButtonActive}>
ADD
</Button>
答案 2 :(得分:0)
您需要检查arrayOfStatusId length 属性