Я слежу за онлайн-курсом о React и практикуюсь с API (swapi.co). Цель состоит в том, чтобы поиграться с API и создать приложение React, которое делает с ним все, что мы хотим.
Поэтому я пытаюсь создать приложение, которое имеет входные данные, и каждый раз, когда входные данные изменяются, оно выбирает соответствующий символ через API и отображает данные о персонаже. Одним из данных является название фильмов, в которых был персонаж, так что это массив, содержащий одну или несколько строк. Все идет хорошо, пока я не попробую l oop через этот массив для отображения. Он будет console.log всего массива, но не пропустит l oop через него с foreach.
Вот мой компонент результата:
class ResultPeople extends Component {
constructor() {
super()
this.state = {
movieTitles: []
}
}
getMovies(movies) {
var movieTitleList = [];
movies.forEach(element => {
fetch(element)
.then(resp => resp.json())
.then(movieData => {
movieTitleList.push(movieData.title);
})
});
this.setState({movieTitles: movieTitleList});
console.log('getMovies Done');
}
render() {
const { resultdata } = this.props;
const { name, films } = resultdata;
return (
<div className="result-characters text-white">
<h2>{name}</h2>
{films ? <button onClick={() => this.getMovies(films)}>See movies</button> : ''}
{
this.state.movieTitles ? <MovieList movies={this.state.movieTitles} /> : null
}
</div>
);
}
}
И вот список mov ie:
const MovieList = ({ movies }) => {
return (
<ul>
{console.log(movies)}
{
movies.forEach(element => {
return <li>{element}</li>;
})
}
</ul>
);
}
Я понятия не имею, почему он так себя ведет. console.log (movies) работает хорошо (хотя в зависимости от того, сколько раз в нем записывается разное количество фильмов, возможно, из-за API?). Но foreach нет.
Где здесь ошибка? Спасибо!