当前位置: 首页 > 面试题库 >

在React js中进行API调用的正确方法是什么?

高夜洛
2023-03-14
问题内容

我最近从Angular转到了ReactJs。我正在使用jQuery进行API调用。我有一个API,该API返回要打印在列表中的随机用户列表。

我不确定如何编写我的API调用。最佳做法是什么?

我尝试了以下操作,但未得到任何输出。如果需要,我愿意实现替代API库。

下面是我的代码:

import React from 'react';

export default class UserList extends React.Component {    
  constructor(props) {
    super(props);
    this.state = {
      person: []
    };
  }

  UserList(){
    return $.getJSON('https://randomuser.me/api/')
    .then(function(data) {
      return data.results;
    });
  }

  render() {
    this.UserList().then(function(res){
      this.state = {person: res};
    });
    return (
      <div id="layout-content" className="layout-content-wrapper">
        <div className="panel-list">
          {this.state.person.map((item, i) =>{
            return(
              <h1>{item.name.first}</h1>
              <span>{item.cell}, {item.email}</span>
            )
          })}
        <div>
      </div>
    )
  }
}

问题答案:

在这种情况下,您可以在中进行ajax调用componentDidMount,然后进行更新state

export default class UserList extends React.Component {
  constructor(props) {
    super(props);

    this.state = {person: []};
  }

  componentDidMount() {
    this.UserList();
  }

  UserList() {
    $.getJSON('https://randomuser.me/api/')
      .then(({ results }) => this.setState({ person: results }));
  }

  render() {
    const persons = this.state.person.map((item, i) => (
      <div>
        <h1>{ item.name.first }</h1>
        <span>{ item.cell }, { item.email }</span>
      </div>
    ));

    return (
      <div id="layout-content" className="layout-content-wrapper">
        <div className="panel-list">{ persons }</div>
      </div>
    );
  }
}


 类似资料:
  • 问题内容: 据我所知,可以在一个单元内进行调试。 但是,我有多个单元格之间的函数调用。 例如, 我试过的 我试图在cell-1的第一行中设置。但是它甚至在执行单元2之前就立即进入调试模式。 我试图在代码之前添加该行。但是,代码永远运行,永不停止。 在ipython笔记本中设置断点的正确方法是什么? 问题答案: 使用 ipdb 通过安装 用法: 用于逐行执行和进入函数使用,并退出调试提示使用。 有关

  • 注意:当通过WebClient exchange()方法获得对ClientResponse的访问权限时,必须始终使用body或toEntity方法之一,以确保释放资源并避免HTTP连接池的潜在问题。如果不需要响应内容,可以使用bodyToMono(void.class)。但是,请记住,如果响应确实有内容,连接将被关闭,并且不会被放回池中。 我可以调用WebClient并忽略结果吗?或者是否有一个通

  • 问题内容: 我正在为MongoDB使用Node.JS驱动程序,我想执行一个同步查询,例如: 问题是,db.open是一个异步调用(它不会阻塞),因此getAThing返回“ undefined”,我希望它返回查询结果。我确定我可以使用某种阻止机制,但我想知道执行此类操作的正确方法。 问题答案: 没有办法使这种同步变得不可怕。正确的方法是接受回调函数作为参数,然后在可用时调用该函数。 节点7.6+更

  • 问题内容: 我正在寻找某种东西(最好是Firefox扩展),使我能够查看所有AJAX子请求。基本上,每当创建XMLHTTPRequest()时,我都想知道正在请求什么URL,以及随它一起传递了什么(如果有的话)GET和POST变量。 除非我想念它,否则在Firebug或Web Developer Toolbar中看不到任何类似的东西。 (以防万一,您想要这样做的主要原因是我想抓取使用JS加载其所有

  • 问题内容: 当每个呼叫都取决于之前的呼叫是否已完成时,我试图找到创建异步呼叫的最佳方法。目前,我通过递归调用定义的流程函数来链接方法,如下所示。 这就是我目前正在做的。 然后我将其称为如下 虽然这对我来说非常好,但我不禁认为必须有一种更好(更简单)的方法。以后我的递归调用变得太深时,会发生什么? 注意 :我不是在浏览器中使用javascript,而是在Titanium框架中使用本机,这类似于Nod