如何在React Native中防止多次单击按钮?

NabilTheCoder

我正在开发一个涉及登录用户的项目,并且它运行良好(我正在使用Firebase进行身份验证)。但是,要进行登录,还需要一些时间,具体取决于互联网连接,因此我需要在单击按钮后将其禁用,然后再次将其重新启用。这是我的代码:

class Login extends Component {

    handlelogin = () => {
    this.setState.errorMessage = '';
    const {email, password} = this.state;
    auth
      .signInWithEmailAndPassword(email, password)
      .then(() => this.props.navigation.navigate('Home'))
      .catch((error) => this.setState({errorMessage: error.message}));
  };

render() {
return (

     // Some code to handle input

      <TouchableOpacity
      style={
        !this.state.email || !this.state.password
          ? styles.disabled
          : styles.button
      }
      disabled={!this.state.password || !this.state.email}
      onPress={this.handlelogin}>
      <Text style={{color: '#fff', fontWeight: '500'}}>Sign in</Text>
    </TouchableOpacity>
)}

我已经尝试过这个答案,这样我的代码才能这样运行,但这似乎不起作用:

class Login extends Component {

    loginProcess = false;

    handlelogin = () => {
    this.setState.errorMessage = '';
    const {email, password} = this.state;
    auth
      .signInWithEmailAndPassword(email, password)
      .then(() => this.props.navigation.navigate('Home'))
      .catch((error) => {
        this.setState({errorMessage: error.message})
        this.loginProcess = false;
   });

  };

render() {
return (

     // Some code to handle input

      <TouchableOpacity
      style={
        !this.state.email || !this.state.password
          ? styles.disabled
          : styles.button
      }
      disabled={!this.state.password || !this.state.email}
      onPress={()=> {
          if (!loginProcess) {
              this.handleLogin;
              this.loginProcess = true;
          }
      }>
      <Text style={{color: '#fff', fontWeight: '500'}}>Sign in</Text>
    </TouchableOpacity>
)}

PS:这是我关于stackoverflow的第一个问题,对于编写更好问题的任何提示表示赞赏

yesIamFaded

您可以实现一个Spinner,它在首次单击时显示而不是按钮,并在通话结束后显示按钮。

我不久前遇到了同样的问题-这是一个小例子:

const MyComponent = ({makePutCall}) => {
   const [showSpinner,setShowSpinner] = useState(false);

   const handlePress = async () => {
      setShowSpinner(true);
      await makePutCall();
      setShowSpinner(false);
   }

   return showSpinner ? <Spinner/> : <Button onPress={handlePress}/>
}

作为“旋转器”,只需使用react-native的ActivityIndi​​cator。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何防止快速多次单击表单按钮

来自分类Dev

如果用户在C#中单击多次,如何防止按钮代码运行两次?

来自分类Dev

如何防止用户单击ASP.NET Webforms的gridview中多次启动文件下载的图像按钮?

来自分类Dev

如何使用useState(在React中)防止多次单击div?

来自分类Dev

如何在同一活动中多次单击按钮

来自分类Dev

React Native:如何在单击按钮时获取文本值?

来自分类Dev

不确定如何在react-native中单击按钮来渲染此组件

来自分类Dev

如何在 React Native 中单击提交按钮时验证电子邮件和密码?

来自分类Dev

如何防止对JComboBox的多次单击

来自分类Dev

如何防止对JComboBox的多次单击

来自分类Dev

在React Native中以编程方式单击按钮

来自分类Dev

在React Native中单击时如何使每个按钮更改颜色?

来自分类Dev

在React Native中单击按钮时如何渲染组件

来自分类Dev

如何在React JS中单击按钮设置值?

来自分类Dev

如何防止多次单击“ prev”按钮上运行多个ajax查询

来自分类Dev

我如何才能防止onclick按钮多次单击,直到通过javascript if(confirm)条件进行确认

来自分类Dev

单击一次后如何禁用提交按钮以防止在Angularjs中进行多次提交?

来自分类Dev

如何防止QML按钮在短时间内多次单击?

来自分类Dev

如何防止多次单击“ prev”按钮上运行多个ajax查询

来自分类Dev

如何使按钮多次单击(工作)?

来自分类Dev

如何使按钮可单击多次

来自分类Dev

如何禁用多次单击的按钮?

来自分类Dev

如果未在表单中单击按钮,如何防止表单提交

来自分类Dev

如何在React Native中添加按钮网格样式?

来自分类Dev

如何在React Native中突出显示单个按钮?

来自分类Dev

如何在 React Native 中呈现单选按钮的值?

来自分类Dev

如何防止在其他按钮上单击表单提交而不是在JavaScript中单击提交按钮

来自分类Dev

如何防止多次单击通过PHP提交?

来自分类Dev

如何防止多次单击通过PHP提交?

Related 相关文章

  1. 1

    如何防止快速多次单击表单按钮

  2. 2

    如果用户在C#中单击多次,如何防止按钮代码运行两次?

  3. 3

    如何防止用户单击ASP.NET Webforms的gridview中多次启动文件下载的图像按钮?

  4. 4

    如何使用useState(在React中)防止多次单击div?

  5. 5

    如何在同一活动中多次单击按钮

  6. 6

    React Native:如何在单击按钮时获取文本值?

  7. 7

    不确定如何在react-native中单击按钮来渲染此组件

  8. 8

    如何在 React Native 中单击提交按钮时验证电子邮件和密码?

  9. 9

    如何防止对JComboBox的多次单击

  10. 10

    如何防止对JComboBox的多次单击

  11. 11

    在React Native中以编程方式单击按钮

  12. 12

    在React Native中单击时如何使每个按钮更改颜色?

  13. 13

    在React Native中单击按钮时如何渲染组件

  14. 14

    如何在React JS中单击按钮设置值?

  15. 15

    如何防止多次单击“ prev”按钮上运行多个ajax查询

  16. 16

    我如何才能防止onclick按钮多次单击,直到通过javascript if(confirm)条件进行确认

  17. 17

    单击一次后如何禁用提交按钮以防止在Angularjs中进行多次提交?

  18. 18

    如何防止QML按钮在短时间内多次单击?

  19. 19

    如何防止多次单击“ prev”按钮上运行多个ajax查询

  20. 20

    如何使按钮多次单击(工作)?

  21. 21

    如何使按钮可单击多次

  22. 22

    如何禁用多次单击的按钮?

  23. 23

    如果未在表单中单击按钮,如何防止表单提交

  24. 24

    如何在React Native中添加按钮网格样式?

  25. 25

    如何在React Native中突出显示单个按钮?

  26. 26

    如何在 React Native 中呈现单选按钮的值?

  27. 27

    如何防止在其他按钮上单击表单提交而不是在JavaScript中单击提交按钮

  28. 28

    如何防止多次单击通过PHP提交?

  29. 29

    如何防止多次单击通过PHP提交?

热门标签

归档