2016-12-29 2 views
0

Я получаю данные из моего Redux стука и подключив его к моему родительскому компонентуРеагировать Redux возвращение массивов объектов, массив их отображениями и пытаюсь передать функцию в качестве реквизита, но получает ошибку обещания

function mapStateToProps (state) { 
    return { 
    data: state.myarticles.data 
    } 
} 
export default connect(mapStateToProps, actions)(MyArticlesView) 

В самом тот же компонент у меня есть этот

{this.props.data && this.props.data.results && 
this.props.data.results.map(this.renderArticles)} 

, который выстреливает функцию, которая перечисляет все компоненты из этого массива

renderArticles (article, i) { 
return (
    <Article key={i} title={article.title} status={article.status} updated={article.updated_at} id={article.id} /> 
) 

}

, но я также хочу, чтобы добавить к этой статье компонент а OnDelete реквизита с именем функции от моего родительского компонента, так что это будет выглядеть как этот

renderArticles (article, i) { 
return (
    <Article key={i} title={article.title} status={article.status} updated={article.updated_at} id={article.id} onDelete={this.handleDeleteClick} /> 
) 

}

но он бросает меня ошибка

Uncaught (in promise) TypeError: Cannot read property 'handleDeleteClick' of undefined 

Я знаю, что в этой функции карты this.handleDeleteClick не видно, но не имею ни малейшего представления о том, как передать его к этому ребенку COMPON Энты

благодарит

+0

Try '() => this.handleDeleteClick() 'вместо' this.handleDeleteClick'. Похоже, вы теряете контекст в методе 'renderArticles'. –

+0

или привязать функцию 'handleDeleteClick' в вашем конструкторе – BravoZulu

+0

Да, я связал это в конструкторе и попытался с() => this.handleDeleteClick, но он выдает ту же ошибку, не уверен, как сохранить контекст в этой функции карты массива: / – user7354758

ответ

0

Вы должны связать this, который относится к Реагировать экземпляр компонента НЕ в функцию функции отображения, чтобы быть следующим:

this.props.data.results.map(this.renderArticles.bind(this))} 
Смежные вопросы