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 毫秒的延遲工作。

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 });
}
};
添加回答
舉報