如何制作TouchableOpacity按钮以防止多次点击

时间:2017-10-26 21:08:04

标签: reactjs react-native touchableopacity

我有TouchableOpacity事件,我不想再执行两次。

我尝试在状态中放入onPress事件bool,但这不起作用,因为设置状态是异步的,我可以快速按下按钮。

我也尝试设置计时器,但这对我也不起作用。

有没有其他方法可以防止多次按下按钮(其他一些类似的组件等)?

1 个答案:

答案 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
}