从Rest API提取的数据未出现在React的浏览器中

csb00

我试图通过执行xhlhttprequest来获取数据,或者在这种情况下,是来自rest api的一个玩笑。这个笑话是一个单一的对象。我将获取的单个笑话添加到初始化的状态数组中。但是,该笑话没有显示在浏览器中,并且在控制台中,没有出现错误。在渲染部分,我尝试遍历应该在每次调用之后创建的单个对象数组。有人可以告诉我问题是什么,为什么它不能在浏览器中呈现?

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;
twhar​​mon

要渲染所有的笑话{jokes}(这是undefined)内的每个div您只需要把setup和一个delivery(或您需要的)笑话放到div

代替:

<div key={joke.id} className="jokesdisplay">
  {jokes}
</div>

采用:

<div key={joke.id} className="jokesdisplay">
  {joke.setup} {joke.delivery}
</div>

现在,完整的render方法可能如下所示:

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">
        {joke.setup} {joke.delivery}
      </div>
    ));
    body = <div>{jokes}</div>;
  }
  return body;
}

我将工作版本放在沙盒中

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

虚拟字段未出现在REST JSON结果中

事件未出现在浏览器中

Formik ErrorMessage 未出现在浏览器上

Google饼图的标题出现,但该图未出现在浏览器中

Xcode项目文件未出现在项目浏览器中

某些网页图标未出现在浏览器中

REST API重复付款出现在沙箱中,但未转移任何款项

尽管出现在浏览器控制台中的设置,但背景图像未出现

部分表单正在控制台中呈现,但未出现在浏览器中

徽标图像未出现在浏览器选项卡的标题栏中

React-API的值未出现在View中

数字出现在浏览器中,但不出现在python中

Eclipse 浏览器在调用 rest api 时出现问题

Azure CosmosDB REST API忽略了数据浏览器返回的结果

如何使用ejs从mongoDB集合中提取文档,使每个文档一次出现在浏览器中?

使用REST API从浏览器进行Twilio连接

如何使用浏览器进行基本的REST API调用

Viber Rest Api无法打开内部浏览器

嵌入在Spring MVC / Rest中的React应用:浏览器GET请求路由

WCF Rest API在浏览器中不显示任何内容

限制在浏览器中公开REST API的某些请求标头

REST API调用从curl或python成功,但在浏览器中失败

使用Rest服务在浏览器中显示pdf

按钮仅出现在Firefox中,而不出现在其他浏览器中

InfluxDB - ERR_EMPTY_RESPONSE - 曾经出现在浏览器中,现在没有

为什么在 Django Rest Framework 中删除对象仍然出现在列表中?

时间选择器未出现在SilverStripe中

冒号“:”未出现在我的计时器中

数据填充Datagrid,但未出现在WPF中