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条经验 获得超3个赞
您可以使用 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 });
}
};
添加回答
举报