eib*_*sji 3 javascript reactjs babeljs
我有两个按钮,一个用于递增数量,一个用于递减.
<button type="button" className="btn btn-danger btn-sm btn-details-addminus" disabled={this.state.quantity === '1'} onClick={() => this.addMinus("minus")}><i className="ion-android-remove"></i></button>
<strong>{this.state.quantity}</strong>
<button type="button" className="btn btn-success btn-sm btn-details-addminus" onClick={() => this.addMinus("add")}><i className="ion-android-add"></i></button>
Run Code Online (Sandbox Code Playgroud)
这是addMinus:
addMinus = (name) => {
this.setState({
quantity: name === "add" ? parseFloat(this.state.quantity) + 1 : parseFloat(this.state.quantity) - 1
})
}
Run Code Online (Sandbox Code Playgroud)
它最初起作用.当数量等于1时,减号按钮被禁用.但是当您单击添加按钮并尝试递减它时,当数量等于1并且继续递减到负值时,按钮不会返回到禁用状态.
您的问题是您的disabled支票需要一个字符串,但您将其setState更新为一个数字(并且1 === '1'为false).你最好不断地将它视为一种或另一种,而数字可能是更好的选择:
<button type="button" disabled={this.state.quantity === 1} ...>
<i className="ion-android-remove"></i>
</button>
Run Code Online (Sandbox Code Playgroud)
然后为您的更新处理程序
addMinus = (name) => {
this.setState(prevState => ({
quantity: name === "add" ? prevState.quantity + 1 : prevState.quantity - 1
})
}
Run Code Online (Sandbox Code Playgroud)