Итак, у вас отсутствуют условия инициации загрузки комментариев в
CommentsList:
componentWillReceiveProps({ isOpen, article, loadArticleComments }) {
loadArticleComments(article.id)
}
каждый раз когда компонент получает новые свойства он вызывает
componentWillReceiveProps. С правильно настроенными параметрами в
redux он это делать будет вечно. Исправить можно так:
componentWillReceiveProps({ isOpen, article, loadArticleComments }) {
if (
!article.commentsLoaded &&
!article.commentsLoading &&
!this.props.isOpen &&
isOpen
) {
loadArticleComments(article.id)
}
}
Расшифровывается так: если комментарии не загруженны и еще не загружаются и если список был закрыт и открылся, то можно загрузить комментарии. Как только они будут загруженны, проверка условий будет вылетать на первом шаге.
В редюсере не помню что было но надо так:
case "LOAD_ARTICLE_COMMENTS_SUCCESS": {
return articleState
.setIn(["entities", action.payload.articleId, "commentsLoading"], false)
.setIn(["entities", action.payload.articleId, "commentsLoaded"], true);
}
По окончанию загрузки комментариев, ставим статье статусы, что комментарии загружены.
Ну и осталось восстановить рендер в содержимого комментария в
Comment и все будет работать:
return (
<div>
<h5>{comment.user}</h5>
{comment.text}
</div>
);