реквизиты не определены при использовании MapStateToProps - PullRequest
0 голосов
/ 29 мая 2018

Когда я попадаю на мою домашнюю страницу, у меня есть текущее состояние, это объект, состоящий из объектов, которые являются моими статьями.

articles:
0: {id:'3',body:'ballon pied ball…football'}
1: {id:'2',body:'Encore du Lorem … article'}
2: {id:'1',body:'Lorem Ipsum Dolo… article'}

Соответствует списку статей на главной странице;когда я нажимаю на одну из них, она должна перенаправить меня на конкретную страницу статьи, где я могу ее прочитать.(/ article /: id)

Поэтому я пытаюсь создать компонент Article, который бы отображал его заголовок, подзаголовок и текст.Но я получаю 'реквизиты не определено' как ошибку:

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

import React from 'react';
import { connect } from 'react-redux';


const Article = ({match}) => (
<div className="aboutpage-wrapper">
  <div className="container">
    <h1>{match.params.id}</h1>
    {console.log(props)}
{/*    <h2>{props.article.title}</h2>
    <h3>{props.article.subtitle}</h3>
    <p>{props.article.body}</p>*/}
  </div>
</div>
);

const mapStateToProps = state => ({ article: state.articles[1] });
// I try to access articles[1] just to see if it works.

export default connect(mapStateToProps)(Article);

любая идея?

1 Ответ

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

Это потому, что в вашем компоненте Article вы деструктурируете реквизиты: ({ match }), поэтому у вас не будет доступа к props.

Если вы хотите получить доступ к props непосредственно в вашей статьекомпонента, то вы должны сделать это:

const Article = props => (...);

Если вы хотите продолжить деструктурирование реквизита, то перечислите все необходимые поля реквизита, как показано ниже:

const Article = ({ match, article, ...rest }) => (...);
...