我創建了一個呼叫如下所示的 api 的函式。我在前端顯示來自 setMessage 的訊息。出于某種原因,當沒有錯誤時,.catch 塊訊息會在 setMessage() 中閃爍,然后 setMessage() 最終以來自 .then() 的正確訊息結束。
我不確定這是為什么。
function handleCoupon(e) {
e.preventDefault();
setMessage("");
setLoading(true);
fetch(`${process.env.NEXT_PUBLIC_SERVER_API}/subscription/coupon/get`, {
method: "POST",
body: JSON.stringify({
appliedCoupon: couponCode.toLowerCase().trim(),
}),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((data) => {
console.log(data);
if (data.coupon === true) {
setMessage(data.message);
setLoading(false);
} else {
setMessage(data.message);
setLoading(false);
}
})
.catch(
(error) => console.log(error.message),
setMessage("Something went wrong, please contact support")
);
}
uj5u.com熱心網友回復:
該.catch只接受單一的功能引數,您傳遞他們的2:
(error) => console.log(error.message)
setMessage("Something went wrong, please contact support")
嘗試將它們合并為 1 個函式,例如
.catch((error) => {
console.log(error.message);
setMessage("Something went wrong, please contact support");
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/389467.html
標籤:javascript 反应 异步等待 es6-promise
上一篇:即使我檢查React.js中有資料,也無法讀取未定義的屬性(讀取“DateTime”)
下一篇:返回列表