TLDR;即使 this.props 的属性丢失,我也需要能够在 React 中渲染子组件。
我有一个使用Yahoo 的 Flxubile构建的 React 应用程序。该应用程序使用 WP REST API 从 Wordpress 站点获取数据。有时可能会丢失图像或 API 中的其他内容,这会导致客户端中断。这是一个例子:
我有一个名为 Articles.js 的文件,它连接到保存我的文章的 ArticlesStore。然后,我为我拥有的每篇文章渲染一个 Article.js,并像这样传递道具:
{ this.props.articles.map(function(el, index) {
return <Article key={index} article={el} />
})
}
这里一切正常,但是在我的 Article.js 中,当我尝试访问未设置的属性时,我得到以下信息:
未捕获的类型错误:无法读取未定义的属性“大小”
这是导致错误的行:
<img src={this.props.article.meta_fields.image.sizes.large} />
当文章中缺少图像时会发生这种情况。我当然理解 javascript 错误,但如果 API/Store 中缺少图像 url,我想呈现 Article.js 组件事件。我尝试了以下解决方案,但它会导致太多混乱且无法控制:
- 如果我们有 prop 即 {this.props.article.meta_fields.image ? this.props.article.meta_fields.image.sizes.large :“imagemissing.png”}
- 设置默认属性。这不起作用,因为从父级传递到子级的属性会覆盖 defaultProps。
也许除了将道具从父母传给孩子之外,我应该尝试其他方法?有一个 ArticleStore,我可以在其中为每篇文章设置默认值吗?你会怎么做?