我正在開發一個react/redux應用程序。該應用呈現來自API的數據,但每次只能顯示最多25個項目。我有一個「加載更多」按鈕來發送另一個調用API來獲取接下來的25個項目。我有一個函數(getAllReviews)將所有數據推送到一個數組並返回數組。然後我映射到數組以將數據呈現到頁面上。數據正確地附加到頁面上,但是,由於映射發生在整個數組上,所以我收到警告:警告:flattenChildren(...):遇到兩個具有相同鍵的子項。子鑰匙必須是唯一的;當兩個孩子分享一把鑰匙時,只有第一個孩子會被使用。React/Redux將更多數據附加到頁面使用按鈕
有關如何避免此警告/以其他方式將信息附加到頁面的任何建議?
const ReviewTile = React.createClass({
getInitialState() {
return {
page: 1,
allReviews: []
}
},
getAllReviews(){ //pushes all 25 items to allReviews array
let reviews = this.props.reducerReview.allReviewData[0].reviewData.reviews;
reviews.forEach(ele => {
this.state.allReviews.push(ele)
})
return this.state.allReviews;
},
getMoreReviews(event){
event.preventDefault();
let page = ++this.state.page;
this.props.postReviews(page); //returns new array with 25 items
this.getAllReviews();
},
render() {
let reviews = this.getAllReviews();
return (
<div>
{
reviews.map((review) =>
<Review //component
key={review.id}
reviewBody={review.review}
/>
)
}
<button
type="button"
className="btn"
onClick={ this.getMoreReviews }> Load More
</button>
</div>
);
}
是否your review.id值unique?我好像他們不是。 Review元素上「key」屬性的值應該是唯一的,例如主鍵。一個可能的罪魁禍首是您的getMoreReviews函數使用相同的ID加載重複的評論。 – mleonard87
修改爲reviews.map((review,i)=> <評論 key = {i} – ellier7