亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在按鈕點擊反應中添加延遲?

如何在按鈕點擊反應中添加延遲?

哈士奇WWW 2022-01-07 19:16:54
我正在嘗試延遲單擊按鈕,以便我正在使用的庫可以進行快速 api 調用以進行驗證。我目前正在使用箭頭函數進行反應并嘗試 setTimeout。但是,由于某種原因,這似乎觸發了頁面加載調用。這是我的代碼。  onClick={this.handleCardSubmit}handleCardSubmit = setTimeout(() => {    this.setState({ showLoaderForPayment: true });    const { collectJs } = this.state;    collectJs.startPaymentRequest();    this.setState({ isPaymentRequestCalled: true });  }, 500);
查看完整描述

2 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

您需要按如下方式更改函數聲明和定義


handleCardSubmit = ()=>{

setTimeout(() => {

    this.setState({ showLoaderForPayment: true });

    const { collectJs } = this.state;

    collectJs.startPaymentRequest();

    this.setState({ isPaymentRequestCalled: true });

  }, 500);

}

在您的代碼片段中,您只是將 settimeout 函數引用傳遞給 handeCardSubmit ,因此沒有綁定 this。為了正確執行它,您必須在箭頭函數中編寫 setTimeout 函數,然后它將以 500 毫秒的延遲工作。


查看完整回答
反對 回復 2022-01-07
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

您可以使用 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 });

}

};


查看完整回答
反對 回復 2022-01-07
  • 2 回答
  • 0 關注
  • 241 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號