我正在构建一个React应用程序,其中有一个ViewUser组件,负责显示使用Axios从API获取的用户详细信息。然而,我面临着一个问题,用户详细信息没有像预期的那样显示在组件中。我已经尝试了各种故障排除步骤,包括使用空字符串初始化状态,但问题仍然存在。
[[ enter image description here ](https://i.stack.imgur.com/lwppT.png)](https://i.stack.imgur.com/s4dKV.png)
有人能帮我一下吗?
已经确认API端点返回了预期的数据,并且从URL中正确提取了id参数。但是,用户详细信息不会显示在组件中。
import axios from 'axios';
import React, { useState, useEffect } from 'react'
import { Link, useParams } from 'react-router-dom'
export default function ViewUser() {
const [user, setUser] = useState({
name: "",
username: "",
email: ""
});
const { id } = useParams();
useEffect(() => {
loadUser();
}, []);
const loadUser = async () => {
try {
const result = await axios.get(`http://localhost:8080/user/${id}`);
console.log(result.data); // Log the fetched user data
setUser(result.data);
} catch (error) {
console.error("Error loading user:", error);
}
};
return (
<div className='container'>
<div className='row'>
<div className='col-md-6 offset-md-3 border rounded p-4 mt-2 shadow'>
<h2 className='text-center m-4'> User Details</h2>
<div className='card'>
<div className='card-header'>
Details of User id : {user.id}
<ul className='list-group list-group-flush'>
<li className='list-group-item'>
<b>Name:</b>
{user.name}
</li>
<li className='list-group-item'>
<b>Username:</b>
{user.username}
</li>
<li className='list-group-item'>
<b>Email:</b>
{user.email}
</li>
</ul>
</div>
</div>
<Link className="btn btn-primary my-2" to="/">Back to Home</Link>
</div>
</div>
</div>
)
}
有人可以帮助我确定可能导致此问题的原因或建议其他故障排除步骤来解决它吗?任何见解或指导将不胜感激。
2条答案
按热度按时间7kjnsjlb1#
请添加“代理”:“http://locahost:8080”这一行在package.json文件中。并且应该使用相对路径来发出API请求。
So const result = await axios.get(localhost:8080/user/${id})
应为const result = await axios.get(/user/${id})
toe950272#
它看起来不像有任何东西强制您的状态更改引起注意,或者您的代码片段不完整。通常(或者更确切地说,根据我的经验),像这样的功能涉及某种加载指示器和其他一些编码基础设施,以了解加载状态并适当地呈现相应的组件。类似于(psuedocode):
然后从
viewUser
返回{loading, data}
,并使用类似{!loading && user ? <UserView user={user} /> : <LoadingSpinner />}
的内容来呈现组件作为一件值得注意的事情:请注意,您实际上并没有在
useEffect
中等待loadUser
的结果。您不应该这样,但是看到promise解决方案被忽略(而不是等待)应该是一个线索,说明在您的解决方案的架构中还有更多的工作要做。