【发布时间】:2020-06-08 01:25:45
【问题描述】:
所以,我知道这个问题已经被问了 100 次了,但在我的例子中似乎没有一个解决方案有效。
我正在使用useState 挂钩将状态更新为值initialValues,该值从getInitialValues 函数返回数据
const [initialValues, setInitialValues] = useState(getInitialValues());
getInitialValues 函数进行逻辑检查并返回一个对象或另一个函数retrieveDetails()
const getInitialValues = () => {
let details;
if(!addressDetails) {
details = retrieveDetails();
} else {
details = {
...,
...,
...
};
}
return details;
}
函数retrieveDetails 是一个异步函数,它进行 API 调用,我等待响应并返回从响应中接收到的对象。
const retrieveDetails = async () => {
const addr = addressDetails[currentAddress];
const { addressLookup } = addr;
const key = process.env.API_KEY;
const query = `?Key=${key}&Id=${addressLookup}`;
const addrDetails = await new AddrService().getAddressDetails(query);
return addrDetails;
}
但是,当我记录状态 initialValues 时,它会返回 Promise {<pending>}?
即使移除 API 调用并简单地返回一个对象,也会呈现相同的结果。
不确定实际返回对象的最佳解决方法?
任何帮助将不胜感激。
【问题讨论】:
-
您可以使用Suspense 来解决这个问题。请参阅 traditional approaches 了解没有它该怎么办。
-
"getInitialValues 函数进行逻辑检查,然后返回一个对象或另一个函数retrieveDetails()" - 不。
标签: javascript reactjs promise async-await es6-promise