我可以用get-axios.get方法获取列表。然后ı可以使用setState,它可以完美地工作。但返回不为true,其返回未定义控制台。log(result(=>未定义。如何检查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);
});
};
return true
语句在setState
的后集回调中。它不会传播到从getList
返回的promise;事实上,您没有从该函数返回任何内容(您甚至没有返回Axios promise;如果您返回了该内容,您将在console.log
中记录响应,但它将在setState
回调完成之前记录(,因此您在console.log
中获得undefined
。
如果您需要getList
在设置状态后返回解析为true
的promise,则需要
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);
});
};
设置状态的第二个参数可以是return true
,但它不会去任何地方。你需要以某种方式使用它,例如:
const response = await axios.get("http://localhost:5000/list")
return new Promise((resolve) => {
this.setState({
copy : response.data.list
}, () => {
resolve(true);
})
})
现在该链将工作,因为您正在使用true
解析promise链,而不是从回调函数返回它