#reactjs #ajax #mongodb #mongoose
Вопрос:
я создаю приложение, в котором пользователь может сохранять свои избранные активы, опубликованные для аренды … и смотрите их на другой странице под названием «Избранное».
class Favorites extends Component { state = { cards: [], }; async componentDidMount() { const { data } = await userMethods.getUserFavorites(); const favoritesArray = data.favorites; for (var cardId of favoritesArray) { const { data } = await cardService.getFavoritesCards(cardId); let arr = []; arr.push(data); console.log(arr); this.setState({ cards: arr }) } } render() { const { cards } = this.state; console.log(cards); return ( lt;div className="container" gt; lt;PageHeadergt;My favoriteslt;/PageHeadergt; lt;div className="row"gt; lt;div className="col-12 mt-4"gt; {cards.length gt; 0 amp;amp; lt;pgt;This are the chosen one's...lt;/pgt;} lt;/divgt; lt;/divgt; lt;div className="row"gt; {cards.length gt; 0 amp;amp; cards.map(card =gt; lt;CardFavorite card={card} key={card._id} /gt;) } lt;/divgt; lt;/divgt; ); } } export default Favorites;
в этом запросе ===gt; const { данные } = ждите пользователей. getUserFavorites(); я получаю массив с идентификаторами карт .. мне нужно сделать еще один запрос к конечной точке, которая повторно использует карты с заданными идентификаторами.. но когда я передаю его компоненту son, он выдает мне только одну карту .. пожалуйста, помогите
Ответ №1:
При каждой итерации цикла for вы создаете новый пустой массив, помещаете в него полученные данные и устанавливаете их в состояние. на следующей итерации вы снова создадите новый пустой массив.
сначала вы должны получить текущее состояние и ввести в него новые данные, а затем сохранить их в этом состоянии
for (var cardId of favoritesArray) { const { data } = await cardService.getFavoritesCards(cardId); let arr = [...this.state.cards]; arr.push(data); console.log(arr); this.setState({ cards: arr }) }
Комментарии:
1. можете ли вы отправить мне свою почту или свой facebook, чтобы я мог проконсультироваться с вами ?
2. к сожалению, нет 😉 вы можете задать свой вопрос здесь, и все сообщество может вам помочь 😀
3. Большое вам спасибо, барзин .. вы решили мою проблему:-)