我有TouchableOpacity
事件,我不想再执行两次。
我尝试在状态中放入onPress
事件bool
,但这不起作用,因为设置状态是异步的,我可以快速按下按钮。
我也尝试设置计时器,但这对我也不起作用。
有没有其他方法可以防止多次按下按钮(其他一些类似的组件等)?
答案 0 :(得分:4)
您无需setState
来存储不会反映为UI更改的值。
你可以直接在你的React Class中使用this.flag
而不是this.state.flag
,你可以在TouchableOpacity上点击。因此,您可以设置this.flag
而不是涉及渲染周期的异步操作。它只是你的组件所持有的旗帜。
见下面的例子:
class SomeComponent extends React.Component{
constructor() {
super();
this.state = { ... }; // this does not need to store our flag
this.touchableInactive = false; // this is not state variable. hence sync
}
onButtonClick () {
if (!this.touchableInactive) {
this.touchableInactive = true;
// do stuff
}
}
// similarly reset this.touchableInactive to false somewhere else
}