React componentDidMount setState but return undefined



我可以用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链,而不是从回调函数返回它

相关内容

  • 没有找到相关文章

最新更新