我试图从mongodb获取数据并显示在表上。我正在使用useEffect调用get函数。但是有时会弹出一个错误,提示无法读取“ details.user._id”,但有时它可以显示数据。有人可以帮忙吗?还是有一个干净的方法吗?任何提示和帮助都非常感谢!
我的使用效果:
useEffect(() => {
getProfile();
getUser();
}, [getUser(), getProfile()])
以下是我想要获取的数据&& getProfile返回此信息:
下面是一个表:
const render_userProfile = (details, index) => {
return (
<tr key={index}>
<td>{details.user._id}</td>
<td>{details.user.fullName}</td>
<td>{details.user.email}</td>
<td>{details.icNumber}</td>
<td>{details.phoneNumber}</td>
<td>{details.dob}</td>
<td>{details.gender}</td>
<td>{details.address1 + " " + details.address2 + " " + details.city + " " + details.state + " " + details.zip}</td>
<td>{details.date}</td>
</tr>
)
}
之所以发生这种情况,是因为在Inact渲染中,当react开始渲染时,details
状态为空且没有_id
任何属性,因此会引发错误。useEffect
在初始渲染之后运行。所以您的数据来晚了。因此,请使用条件重做。
const render_userProfile = (details, index) => {
return (
<tr key={index}>
<tr key={index}>
{
Object.keys(details).length ?
<React.Fragment>
<td>{details.user._id}</td>
<td>{details.user.fullName}</td>
<td>{details.user.email}</td>
<td>{details.icNumber}</td>
<td>{details.phoneNumber}</td>
<td>{details.dob}</td>
<td>{details.gender}</td>
<td>{details.address1 + " " + details.address2 + " " + details.city + " " + details.state + " " + details.zip}</td>
<td>{details.date}</td>
</React.Fragment>
:
<td>Loading...</td>
}
</tr>
)
}
这里的数据只有在细节中包含一些对象的情况下才会呈现,否则它将呈现 loading...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句