Это приложение React / Redux. У меня есть два компонента. Один вложен в другой.
<UserReview>
<UserReviewItem>
</UserReview>
Я работаю с двумя API. Я вызываю один API для получения 'movieId', я использую 'movieId', чтобы вызвать второй API для получения изображения. Я сопоставляю массив, но кажется, что он возвращает только последний идентификатор элемента фильма.
Компонент упаковки:
class UserReview extends Component {
componentDidMount() {
this.props.fetchAllReviews();
}
render() {
const allReviews = this.props.reviews.slice(-2).map((review, i) => {
return (
<UserReviewItem
username={review.username}
text={review.text}
key={review._id}
movieId={review.movieId}
/>
)
});
const mapStateToProps = state => ({
reviews: state.movies.reviews
})
Дочерний компонент:
class UserReviewItem extends Component {
componentDidMount() {
**this.props.fetchImage(this.props.movieId)**
}
render() {
return (
<div key={this.props.key}>
<img
src={`https://image.tmdb.org/t/p/original/${this.props.img}`}
/>
<div>
<h4>{this.props.username}</h4>
<p>{this.props.text}</p>
</div>
</div>
);
const mapStateToProps = state => ({
img: state.movies.img
})
Мне нужно другое изображение для каждого элемента в массиве, но я получаю одно и то же изображение, даже если имена пользователей и тексты разные.
Решение, которое я пробовал, но получило тот же результат:
class UserReview extends Component {
componentDidMount() {
this.props.fetchAllReviews();
}
render() {
const allReviews = this.props.reviews.slice(-2).map((review, i) => {
return (
<UserReviewItem
username={review.username}
text={review.text}
key={review._id}
-------> movieId={this.props.reviews[i].movieId} <--------
/>
)
});
const mapStateToProps = state => ({
reviews: state.movies.reviews
})