我可以使用 get axios.get 方法獲取串列。然后我可以使用 setState 并且它可以完美地作業。但回傳不是 true ,它回傳 undefined console.log(result) => undefined 。我如何檢查 setState 是否作業正常回傳 true 或回傳 false ?
getList = async () => {
await axios.get("http://localhost:5000/list").then((response) => {
this.setState(
{
copy: response.data.list,
},
() => {
return true;
},
);
});
};
componentDidMount = () => {
this.getList().then((result) => {
console.log(result);
});
};
uj5u.com熱心網友回復:
您的return true宣告在setState's post-set 回呼中。它不會傳播到從getList;回傳的承諾。實際上,您從該函式中沒有回傳任何內容(您甚至沒有回傳 Axios 承諾;如果您確實回傳了它,您將在console.log您setState的undefined. console.log.
如果您需要getList回傳一個true在設定狀態后決議為的承諾,您需要
getList = () => {
return new Promise((resolve) =>
axios.get("http://localhost:5000/list").then((response) =>
this.setState(
{
copy: response.data.list,
},
() => resolve(true),
),
),
);
};
componentDidMount = () => {
this.getList().then((result) => {
console.log(result);
});
};
uj5u.com熱心網友回復:
設定狀態的第二個引數可以return true但是,它不會去任何地方。你需要以某種方式使用它,例如:
const response = await axios.get("http://localhost:5000/list")
return new Promise((resolve) => {
this.setState({
copy : response.data.list
}, () => {
resolve(true);
})
})
現在該鏈將起作用,因為您正在解決 Promise 鏈,true而不是從回呼函式中回傳它
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/445712.html
標籤:javascript 反应
下一篇:array.reduce和空值
