Не удается прочитать свойство объекта - PullRequest
0 голосов
/ 29 мая 2018

У меня есть компонент Article и состояние со всеми моими статьями.Я отображаю состояние на реквизит с нужной статьей, которую хочу отобразить

console.log(props.article) работает, но console.log(props.article.title) или любой другой атрибут не работает (я получаю Cannot read property 'id' of undefined).Зачем ?

Мой Article.js компонент:

импорт React из'act ';

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);

1 Ответ

0 голосов
/ 29 мая 2018

Ответ раскрывает недоступность реквизита и, следовательно, соответствующую коллекцию внутри него.

Сначала вы должны проверить наличие вашего реквизита.Вы можете использовать оператор деструктуризации ES6 как:

const { article } = this.props;

, что аналогично

const article = this.props.article ? this.props.article : '';

Кроме того, при выводе содержимого изнутри вы можете использовать ту же логику для доступностисодержимое внутри article как:

<h2>{props.article.title ? props.article.title : '' } </h2>

Альтернативная логика короткого замыкания:

Во время рендеринга содержимого вы также можете написать так:

<h2>{(props.article || {}).title || ''} </h2>

Я надеюсь, что это поможет.

Ура!

...