我試圖在 componentDidMount 中獲取一些資料,然后將其設定為狀態,為此撰寫了一個異步等待函式。但是,如果我試圖在等待之后立即使用值設定狀態,則該值被設定為待處理的承諾,但控制臺日志記錄會給出正確的輸出。出于這個原因,我呼叫了 getData().then() 來設定資料,為什么它給出了未決的承諾,有人可以在這里清除這個概念嗎?
componentDidMount() {
async function getData() {
const baseUrl = `https://........`;
const response = await fetch(baseUrl);
if (response.status === 200) {
const json = await response.json();
const { data } = json;
//console.log(data) =>correct output
return data;
}
return null;
}
getData().then(data => {
this.setState({ names: data });
});
}
uj5u.com熱心網友回復:
你可以簡單地這樣做:
componentDidMount() {
const baseUrl = `https://........`;
fetch(baseUrl)
.then((response) => response.json())
.then(result => {
this.setState({ names: result.data});
});
}
uj5u.com熱心網友回復:
getData是一個異步函式,您可以在其中同步您的 fetch 呼叫。所以它回傳一個承諾。獲取回應后,您將在該函式內進行控制臺登錄。所以它記錄資料。
您可以將其視為Fetch您使用的函式,您正在等待它,因為它是一個異步函式,您應該等待回應。也一樣getData。無論您如何等待,使用then或await.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/414263.html
標籤:
