Я пытаюсь получить данные или, в данном случае, шутку из отдыха api , выполнив xhlhttprequest. Шутка - это единый объект. Я добавляю одиночную шутку в массив состояний, который я инициализировал. Однако шутка не отображается в браузере, а в консоли никаких ошибок не появляется. В части рендеринга я попытался перебрать один массив объектов, который должен был быть создан после каждого вызова. Может кто-нибудь сказать мне, в чем проблема и почему она не отображается в браузере?
import React from 'react';
class DadJokesApi extends React.Component {
constructor(props){
super(props);
this.state = {
isLoaded: false,
error: null,
jokes: []
}
}
componentDidMount()
{
this.getData()
}
getData() {
var xhr = new XMLHttpRequest()
xhr.addEventListener('load', () => {
if(xhr.readyState === 4){
if(xhr.status === 200){
var response = xhr.responseText,
json = JSON.parse(response);
this.setState( prev =>({
isLoaded: true,
jokes: [...prev.jokes,json]
}))
} else {
this.setState({
isLoaded: true,
error: xhr.responseText
})
}
}
})
xhr.open('GET', ' https://sv443.net/jokeapi/v2/joke/any', true)
xhr.send();
}
render() {
var body;
if(!this.state.isLoaded){
body = <div>...Loading</div>;
} else if (this.state.error) {
body = <div>Error occurred { this.state.error} </div>
} else {
var jokes = this.state.jokes.map(
joke => <div key={joke.id} className="jokesdisplay">{jokes}</div>
);
body = <div>{jokes}</div>
}
return body;
}
}
export default DadJokesApi;