2 回答

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
您需要按如下方式更改函數(shù)聲明和定義
handleCardSubmit = ()=>{
setTimeout(() => {
this.setState({ showLoaderForPayment: true });
const { collectJs } = this.state;
collectJs.startPaymentRequest();
this.setState({ isPaymentRequestCalled: true });
}, 500);
}
在您的代碼片段中,您只是將 settimeout 函數(shù)引用傳遞給 handeCardSubmit ,因此沒(méi)有綁定 this。為了正確執(zhí)行它,您必須在箭頭函數(shù)中編寫 setTimeout 函數(shù),然后它將以 500 毫秒的延遲工作。

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用 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 });
}
};
添加回答
舉報(bào)