React新手,在理解如何从response.data引用对象数据方面有困难。请考虑以下代码:
import React, {useRef, useState, useEffect} from "react";
import UserService from "../services/user.service";
import AuthService from "../services/auth.service";
export const getUser = () => {
// Retrieve user info from locally stored JSON
const currentUser = AuthService.getCurrentUser();
const [user, setUser] = useState("");
useEffect(() => {
getUser();
}, []);
const getUser = () => {
// Retrieve user info from DB using user id
UserService.getUser(currentUser.id)
.then(response => {
setUser(response.data); // This is what I what I want to reference
console.log(response.data);
})
.catch(e => {
console.log(e);
});
};
return (
<div>
{user.username}
</div>
);
};
我看到控制台中正确返回了数据:{用户名:'GlennQuagmire'}
使用Webstorm中的调试工具,我看到用户加载了这个值。但是当我们开始呈现{user.username}时,什么也没有显示。我做错了什么?
2条答案
按热度按时间ws51t4hk1#
请看代码,我使用了公共API作为数据库,但您可以将其与您的代码相关联。我认为您需要使用
response.json()
,然后设置data
。同样,当您将用户设置为对象时,初始的useState
应声明为空对象const [user, setUser] = useState({});
。envsm3lx2#
我找到了答案,在return块中建模:
看起来像是一个迂回的方式来获得一个单一的数据在那里,但它的工作。如果任何人有更好的建议,随时分享。