【发布时间】:2021-01-15 20:26:27
【问题描述】:
我正在为 JavaScript 中的 Promise 概念而苦苦挣扎。我正在编写一个 React 应用程序,它使 GET 调用 Java 中的单独 API 服务,我想将其状态存储在 useState() 挂钩中。所以这是我的fetch 代码:
const ratingsUrl = "%URL%";
const base64 = require("base-64");
const login = "login";
const password = "password";
function fetchRatings() {
return fetch(ratingsUrl, {
method: "GET",
headers: new Headers({
Authorization: "Basic " + base64.encode(login + ":" + password),
}),
})
.then((response) => response.json())
.catch(handleError);
}
现在我正在尝试将其状态存储在我的页面组件中的挂钩中:
function DisplayPage(){
const [ratings, setRatings] = useState(fetchRatings());
.
.
.
}
现在,数据返回,但它位于 Promise 中,因此导致错误:
Promise {<pending>}
__proto__: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: Array(20)
我需要做的是在一个钩子中初始化数据并在Table 中返回它,这样我就可以映射它。但是,每当我尝试做类似的事情时
ratings.map()
我在控制台中收到一个 TypeError 提示 ratings.Map is not a function。
我知道fetch 库异步返回数据,但我真正想要的只是将PromiseResult 存储在useState() 钩子中,这样我就可以进一步对其执行操作。
【问题讨论】:
-
fetchRatings返回一个 Promise ...使用您已经知道的 Promise 方法来获得承诺的价值(即您需要使用.then
标签: javascript reactjs asynchronous promise fetch-api