Когда я монтирую свой компонент CommentFeed
, он будет вызывать getPost()
дважды, потому что у меня есть два поста с отдельным CommentFeeds.Поскольку каждое из этих полей прослушивает изменения реквизита для комментариев, последний CommentFeed (Пост 2) не имеет никаких комментариев и приведет к тому, что мой (Пост 1) не будет иметь комментариев.Я думал о сохранении состояний комментариев для каждого CommentFeed, но если я проверяю prevState с nextProps, теоретически все равно следует переопределять комментарии Post1, поскольку технически nextProp отличается?
Как мне вообще подойти к этому?Пожалуйста, скажите мне, если это не имеет смысла, поэтому я могу уточнить лучше
Пост 1: есть Комментарии
Пост 2: Нет комментариев (getPost () этого CommentFeed удаляетКомментарийПочта сообщения 1)
import React, { Component } from "react";
import PropTypes from "prop-types";
import CommentItem from "./CommentItem";
import { getPost } from "../../oldComp/actions/postActions";
import { connect } from "react-redux";
class CommentFeed extends Component {
constructor(props) {
super(props);
const { postId } = this.props;
this.props.getPost(postId);
}
render() {
const { postId, comments } = this.props;
console.log(comments);
if (comments === undefined) {
return <div />;
} else {
return (
<div>
{postId}
{comments.map(comment => {
return (
<div key={comment._id}>
<CommentItem
key={comment._id}
postId={postId}
comment={comment}
/>
</div>
);
})}
</div>
);
}
}
}
CommentFeed.propTypes = {
comments: PropTypes.array,
getPost: PropTypes.func.isRequired,
comments: PropTypes.array,
postId: PropTypes.string.isRequired
};
const mapStateToProps = state => ({
comments: state.post.post.comments
});
export default connect(
mapStateToProps,
{ getPost }
)(CommentFeed);