export default decreasePrice extends React.Component {
constructor(props) {
super(props);
this.state = {
price : 50000
}
};
_handlePrice = () => {
this.setState({price : this.state.price - 2000});
}
render() {
return( <div>
<TouchableOpacity onPress={this._handlePrice} >
<Text> Offer for you </Text>
</TouchableOpacity>
)
}}
所以,我想要的是,一旦价格下降,我想在一次点击后禁用我的按钮,这样用户就不能一次又一次地降低价格。我想在oneCLick之后禁用该按钮。
答案 0 :(得分:4)
您可以将变量用作标记,例如 this.pressed :
export default decreasePrice extends React.Component {
constructor(props) {
super(props);
this.pressed = false;
this.state = {
price : 50000
}
};
_handlePrice = () => {
if (!this.pressed){
this.pressed = true;
this.setState({price : this.state.price - 2000});
}
}
render() {
return(
<TouchableOpacity onPress={this._handlePrice} >
<Text> Offer for you </Text>
</TouchableOpacity>
)
}
}
以这种方式按钮只工作一次。 你可以按下后删除 TouchableOpacity :
render() {
if (!this.pressed)
return(
<TouchableOpacity onPress={this._handlePrice} >
<Text> Offer for you </Text>
</TouchableOpacity>
)
else
return(
<View>
<Text> Offer for you </Text>
</View>
)
}
答案 1 :(得分:3)
如果你不介意引入像下划线或lodash这样的库,你可以在_.once()
中包装_handlePrice。它消除了在组件实例中需要单独的状态。
constructor(props) {
super(props);
this.state = { price: 50000 };
this._handlePrice = _.once(this._handlePrice.bind(this));
}