reactjs - React 组件总是恢复到数组中的最后一项
问题描述
这是一个 React/Redux 应用程序。我有两个组件。一个嵌套在另一个中。
<UserReview>
<UserReviewItem>
</UserReview>
我正在使用两个 API。我调用一个 API 来获取“movieId”,然后使用“movieId”调用第二个 API 来检索图像。我正在映射一个数组,但它似乎只返回最后一个元素的movieId。
包装组件:
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
})
解决方案
我找到了答案。因为第二次调用取决于第一次调用的信息,所以我必须使用 .then() 链接调用
推荐阅读
- r - 什么是覆盖/编辑数据框中特定字段的好方法?
- python - re.search 无法在文件中找到正则表达式模式
- node.js - 没有从 JS 客户端中的 REST API 的 fetch 调用中取回数据
- java - 为什么不能列表
> 被分配到一个列表 >? - sqlite - 使用 MariaDB 而不是 SQLite 的 Jupyter Hub
- c - 问题强制从 C 中的函数返回 -1
- python - 在 virtualenv 中找不到模块
- php - 如何生成随机嵌入图片网址
- javascript - 如何在 React.js 中使用重复循环
- c++ - c++ 在不改变原始链表的情况下反转链表