reactjs - 无法在反应中完全获取数据对象,很可能是由于获取调用延迟
问题描述
我正在尝试获取有关作者的 Wordpress Rest API 数据。
所以我使用 ComponentDidMount() 状态:
constructor(props) {
super(props);
this.state = {
data: {},
};
}
componentDidMount() {
apiFetch( { path: '/wp/v2/users/1' } )
.then(data => this.setState({ data }));
}
在我的渲染中:
const { data } = this.state;
我的数据将与此类似:
{
id: "2",
name: "Alex",
image_url: {
24: "http//...",
48: "http//...",
96: "http//..."
}
}
所以在我的回报中,如果我这样做:
<div className={className}>
{data.name}
</div>
它正在工作,我会得到“Alexander”,但如果添加图片网址:
<div className={className}>
{data.name}
<img src={data.image_url['24']} />
</div>
我会得到一个错误Cannot read property '24' of undefined
。据我了解,获取有一些延迟,这就是我收到错误的原因。
如何添加处理期望?抱歉,在 React 中我是初学者。
PS 这实际上是 Gutenberg 编辑器,它实际上是 react,但有一些类似核心的apiFetch
功能,它类似于 fetch。
解决方案
正如您所说,在响应解决之前,反应变量不会出现,您只需检查它是否存在
<div className={className}>
{data.name}
{ data.image_url ? (<img src={data.image_url['24']} />) : (<></>) }
</div>
推荐阅读
- c - 排序函数不会打印排序数组?
- conda - 切换环境后未停用 Conda 环境
- html - 如何将元素放置在网页上所需的位置?
- c++ - 调用 'begin(int [n])' 没有匹配的函数
- go - 使用 golang fasthttp 在 Digitalocean 负载均衡器上的高平均请求持续时间
- r - R 中更好的热图可视化
- c# - 新行的自动插入不显示 datagridviewbutton 列
- swift - 从 Firebase 检索到的“展开”数据
- laravel - Laravel 在多个组和多个控制器中的相同路由
- java - 当我尝试在另一个活动的图像视图上显示图像时应用程序崩溃