我遇到了一个问题,当我用ReactJs从Laravel passport API中检索数据时,但是当我试图显示它们或发送到另一个组件时,我遇到了一个错误。下面是我使用的代码。
const [user, setUser] = useState({});
const myHeaders = new Headers();
myHeaders.append("Authorization", `Bearer ${localStorage.getItem("token")}`);
const myInit = {
method: "GET",
headers: myHeaders,
mode: "cors",
cache: "default",
};
useEffect(() => {
async function fetchUserData()
{
fetch("http://localhost:8000/api/user", myInit)
.then((response) => {
const data = response.json();
setUser(data);
});
}
fetchUserData();
}, [])
console.log(user.name)
console.log(user);
字符串
这是控制台中显示的错误:
的数据
1条答案
按热度按时间4xrmg8kj1#
有一个主要的问题i。也就是说,
response.json()
是异步的,因此返回一个Promise
,所以你要么使用await
,要么使用then()
来链接continuation。此外,您应该检查响应的HTTP状态代码,以确保您获得数据。最后但并非最不重要的是,您应该捕获fetch()
可能抛出的错误,例如。当您的服务器处于脱机状态等。使用try-catch块(当使用async/ await
时)或catch()
(当链接Promise
s时)。我建议使用async/ await
或链接。大多数人更喜欢async/ await
,因为它允许编程,就像调用同步发生一样。字符串