给定谓语,如何禁用按钮

时间:2019-04-15 07:22:11

标签: javascript reactjs

我不知道我在哪里犯错,但这似乎很奇怪。当我切换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

3 个答案:

答案 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 属性