【发布时间】:2020-08-25 01:04:46
【问题描述】:
授权并重定向到/userProfile页面后我得到错误:
Uncaught (in promise) TypeError: Cannot read property 'name' of null.
我有<Page /> 组件。
代码:
const Page = () => {
return (
<div>
<div style={{display: "flex", alignItems: "center", justifyContent: "space-between"}}>
<h1>{`${userData.name} ${userData.surname}`}</h1>
<button onClick={() => logout()} style={{display: "block"}}
className="btn btn-large ">
Выйти</button>
</div>
</div>
);
};
它通过 useState 钩子使用来自名为 userData 的状态的值
const [loading, setLoading] = useState(true);
const [userData, setUserData] = useState({name: "", surname: "", posts: [], email: "", password: ""});
我在 useEffect 挂钩中获取数据
const request = useCallback(async (url, method = 'POST', body = null, headers = {}) => {
setLoading(true)
try {
if (body) {
body = JSON.stringify(body)
headers['Content-Type'] = 'application/json'
}
const response = await fetch(url, {method, body, headers});
const data = await response.json();
setLoading(false);
return data;
} catch (e) {
setLoading(false)
throw e
}
}, []);
useEffect(() => {
const response = request("/api/user/getDataByUserId", "POST", {userId: userId});
response.then(r => {
setUserData(r.data);
});
}, [request, userId]);
我从 AuthContext 获得的用户 ID 这个问题我试了两天解决了,请帮助我
【问题讨论】:
-
你的请求方法所在的组件是什么
-
似乎
<Page />组件无权访问userData。您在哪里使用该组件?也许您可以尝试通过props传递userData。 -
我已经完全找到了解决办法。我需要将 h1 标签更改为 {userData &&
{
} 检查${userData.name} ${userData.surname}}
标签: javascript reactjs react-hooks