繁体   English   中英

如何在按钮点击反应中添加延迟?

[英]How do I add a delay on a button click in react?

我正在尝试延迟单击按钮,以便我正在使用的库可以快速调用 api 进行验证。 我目前正在使用箭头 function 进行反应并尝试 setTimeout。 但是,由于某种原因,这似乎触发了页面加载调用。 这是我的代码。

  onClick={this.handleCardSubmit}

handleCardSubmit = setTimeout(() => {
    this.setState({ showLoaderForPayment: true });
    const { collectJs } = this.state;
    collectJs.startPaymentRequest();
    this.setState({ isPaymentRequestCalled: true });
  }, 500);

您好,您需要更改您的 function 声明和定义如下

handleCardSubmit = ()=>{
setTimeout(() => {
    this.setState({ showLoaderForPayment: true });
    const { collectJs } = this.state;
    collectJs.startPaymentRequest();
    this.setState({ isPaymentRequestCalled: true });
  }, 500);
}

在您的代码片段中,您只是将 settimeout function 引用传递给handeCardSubmit,因此没有绑定。 为了正确执行它,您必须在箭头 function 内写入 setTimeout function,然后它将像延迟 500 毫秒一样工作。

你应该试试这个箭头语法

 onClick={ () => this.handleCardSubmit() }

而不是这个

onClick={ this.handleCardSubmit } 

您可以使用 e.preventDefault(),并尝试以下代码。

handleCardSubmit = (e) => {
    e.preventDefault();
    setTimeout(() => {
    this.setState({ showLoaderForPayment: true });
    const { collectJs } = this.state;
    collectJs.startPaymentRequest();
    this.setState({ isPaymentRequestCalled: true });
  }, 500);
};

或者您可以使用async-await

handleCardSubmit = async (e) => {
    e.preventDefault();
    await setdata();

    setdata() {
    this.setState({ showLoaderForPayment: true });
    const { collectJs } = this.state;
    collectJs.startPaymentRequest();
    this.setState({ isPaymentRequestCalled: true });
}
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM