reactjs - 无法读取对象的属性
问题描述
我有一个文章组件和一个包含我所有文章的状态。我使用我想要显示的正确文章将状态映射到道具。
console.log(props.article)
有效,但console.log(props.article.title)
或任何其他属性无效(我得到Cannot read property 'id' of undefined
)。为什么 ?
我的Article.js
组件:
从“反应”导入反应;
import { connect } from 'react-redux';
const Article = props => (
<div className="aboutpage-wrapper">
<div className="container">
{ console.log(props.article)}
{/* <h2>{props.article.title}</h2>
<h3>{props.articlesubtitle}</h3>
<p>{props.article.body}</p>*/}
</div>
</div>
);
const mapStateToProps = (state,props) => ({ article: state.articles.find(function (article) { return article.id === props.match.params.id; })});
export default connect(mapStateToProps)(Article);
解决方案
答案深入探讨了道具的不可用性以及它们内部的相应集合。
您应该首先检查道具的可用性。您可以将 ES6 解构运算符用作:
const { article } = this.props;
这与
const article = this.props.article ? this.props.article : '';
此外,在渲染内部内容时,您可以使用相同的逻辑来处理article
as 内部的内容可用性:
<h2>{props.article.title ? props.article.title : '' } </h2>
备用短路逻辑:
在渲染内容的同时,你也可以这样写:
<h2>{(props.article || {}).title || ''} </h2>
我希望这将有所帮助。
干杯!
推荐阅读
- java - 如何在 Java 中分层绘制组件?
- javascript - 页面加载时自动单击按钮
- laravel - 获取包含 10 个项目的缓存 Eloquent 集合超时
- javascript - 无法获得在数组中查找相同字符串的多个索引的函数
- arrays - Postgres 10.5:如何将整数数组链接到单独表的主键?
- android - 如何在android中获取调用应用程序(Intent.ACTION_CALL)的列表
- javascript - 转发 Refs:forwardedRef 始终为 null
- c# - Redis - 哪种数据类型是存储数据的最有效方式
- java - 如何使用 Java 运行时 exec 将数据输入到外部 GUI
- node.js - 是否应该生成一个新的节点进程来处理超过 100 个请求?