mcc*_*osa 9 javascript promise async-await reactjs es6-promise
所以,我知道这个问题已经被问了 100 次,但在我的例子中似乎没有一个解决方案有效。
我正在使用useState钩子将状态更新为initialValues获取从getInitialValues函数返回的数据的值
const [initialValues, setInitialValues] = useState(getInitialValues());
Run Code Online (Sandbox Code Playgroud)
该getInitialValues函数执行逻辑检查并返回一个对象或另一个函数retrieveDetails()
const getInitialValues = () => {
let details;
if(!addressDetails) {
details = retrieveDetails();
} else {
details = {
...,
...,
...
};
}
return details;
}
Run Code Online (Sandbox Code Playgroud)
该函数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;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我记录initialValues它返回的状态时Promise {<pending>}?
即使删除 API 调用并简单地在其位置返回一个对象也会呈现相同的结果。
不确定实际返回对象的最佳方法?
任何帮助将不胜感激。
Sag*_*b.g 22
我认为没有办法useState异步获取初始数据,至少目前还没有。
React 不会等待您的数据到达,当您的异步操作排队时(在事件循环端),该函数将继续运行直至完成。
当前惯用的方法是在效果中获取数据并更新状态。
useEffect(() => {
getData(someParam).then(data => setState(data))
}, [someParam])
Run Code Online (Sandbox Code Playgroud)
您可以在DOCS 中阅读更多相关信息
| 归档时间: |
|
| 查看次数: |
10853 次 |
| 最近记录: |