簡體   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