我正在嘗試使用axios來檢查向服務器發送請求后的狀態。我設計了一個服務器,如果你提交的表單是空的,你將得到一個錯誤。如果你能在代碼中看到,我已經嘗試在finally塊中檢查狀態,但它沒有正常作業。比如當我最初提交表單時,沒有輸入,控制臺日志顯示沒有錯誤,而當我嘗試提交有輸入的表單時,控制臺中沒有顯示任何東西。我只是想檢查請求中是否有錯誤,因為我想在它們之間運行一個函式。
我使用的服務器是實時運行的,你可以通過將URL改為/getUser
代碼在這里。https://codesandbox.io/s/quizzical-danny-dv1l7?file=/src/App.js
uj5u.com熱心網友回復:
它并不像那樣作業。
const [error, setError] = useState("")。
error是初始值(空字串)。我不知道useState是如何作業的,但是,error是一個字串,所以它是一個值,而不是一個參考。這個變數不可能在finaly塊中被更新。
uj5u.com熱心網友回復:
簡單的答案是你在函式中設定了你的狀態,然后試圖把它讀成你的 "當前狀態"。 試著這樣做......
const handleSubmit = async (e) => {
e.preventDefault()。
try {
await axios.post("https://testing-name-app.herokuapp.com/create"/span>, {
第一個。
最后
});
} catch (error) {
console.log("發現錯誤")。
return setError(error.response.data.errorMessage) 。
}
//對這種模式要小心謹慎! 這只是意味著請求回來了。
//沒有錯誤,但可能有一個來自你的呼叫的資訊。
//包含一個來自你的資料庫/服務器等的錯誤。
return console.log("no errors") 。
};
這里有一個快速查看你的呼叫情況的方法......
const handleSubmit = async (e) => {
e.preventDefault()。
let res
try {
res = await axios.post("https://testing-name-app.herokuapp.com/create"/span>, {
第一個。
最后
});
} catch (error) {
res = error
console.log("發現錯誤")。
setError(error.response.data.errorMessage)。
}
finally {console.log('res: ', res)}; };;data.errorMessage; }
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322226.html
標籤:
上一篇:Nodejs承諾--由異步函式依次組成流水線,支持提前退出
下一篇:如何使用node.js發送短信
