Я хочу взять данные из JSON, затем взять другие данные из связанного JSON по идентификатору и передать их в мой массив состояний movies
.
Это мой код:
state = {
movies: []
}
componentDidMount() {
fetch('https://api.themoviedb.org/3/movie/popular?api_key=APIKEY&page=1')
.then(response => response.json())
.then(data => {
const movies = data.results;
movies.forEach(movie => this.moviePageAndGenres(movie.id, movie));
this.setState({
movies
});
})
}
moviePageAndGenres = (id, element) => {
fetch('https://api.themoviedb.org/3/movie/' + id + '?api_key=APIKEY')
.then(response => response.json())
.then(data => {
element.genres = data.genres;
element.homepage = data.homepage;
});
}
В render()
Я просто console.log
мой movies
, чтобы проверить правильность данных внутри.
Вывод: image
Так что это правильно, но когда я проверяю Component Props, эти реквизиты не переносятся.
image
Вот как я передаю реквизиты:
const movies = this.state.movies.map(movie =>
<Movie genres={movie.genres}
homepage={movie.homepage}
key={movie.id}
title={movie.title}
poster={movie.poster_path}
rating={movie.vote_average}
/>
)
Я думаю, это проблема с многократным вызовом асинхронного fetch()
.Но я не знаю, как справиться с этим.