React 中的异步 xmlhttprequest

2024-02-05

我正在尝试在react中实现异步XMLHttpRequest。 这是我的尝试:

var xhr = new XMLHttpRequest();
var json_obj, status = false;
xhr.open("GET", "https://jsonplaceholder.typicode.com/photos/", true);
xhr.onload = function (e) {
  if (xhr.readyState === 4) {
    if (xhr.status === 200) {
      json_obj = xhr.responseText;
      status = true;
    } else {
      console.error(xhr.statusText);
    }
  }
};
xhr.onerror = function (e) {
  console.error(xhr.statusText);
};
xhr.send(null);

class Welcome extends React.Component {
  render() {
    return (
      <div>
          <img src= {status ?  json_obj[0].url : 'loading...'}></img>
      </div>
    );
  }
}
ReactDOM.render(
   <Welcome/>,
   document.getElementById('root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>

我一直在考虑添加监听器,但我不知道该怎么做。

总的来说,我在异步 XMLHttpRequest 加载并返回值后遇到更新问题。


建议在以下位置进行 AJAX 调用componentDidMount生命周期方法。

componentDidMount是为了副作用。添加事件监听器、AJAX、改变 DOM 等。

另外,您应该考虑使用新的fetch API https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch.

class Welcome extends React.Component {
  constructor() {
    this.state = {
      data: null,
    };
  }

  componentDidMount() {
    fetch('https://jsonplaceholder.typicode.com/photos/').then(response => {
      return response.json();
    }).then(json => {
        this.setState({ data: json});
    }).catch(error);
  }

  render() {
    if (this.state.data) {
      return <img src={this.state.data[0].url} />
    }
    else {
      return <div>Loading...</div>
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React 中的异步 xmlhttprequest 的相关文章

随机推荐

  • 将文件从 Artifactory 下载到 Teamcity,而不保留其完整路径

    我在用 TeamCity 企业版 2017 1 2 内部版本 46812 Artifactory 专业版 5 3 1 修订版 50046 Teamcity 已安装 Artifactory 插件 版本 2 3 0 任务很简单 从 Artifa
  • 在 Chrome 中编辑粘性输入元素会导致页面滚动到顶部

    我试图使用CSSposition sticky在我的一个个人项目中 当我注意到内部有可编辑元素 例如输入字段或文本区域 时 会触发页面滚动到顶部 如果可能的话 我真的很想消除这种行为 container height 5000px head
  • 我如何知道哪个按钮调用了我的 javascript?

    再会 我有三个按钮 让我们称它们为 myBtn1 myBtn2 和 myBtn3 执行基本相同的操作 即在模态模式下打开 div 我有点不知道 谁 即哪个按钮 调用了我的 javascript 有没有一种简单的方法可以知道这一点 或者我是否
  • 当外部程序使用 Process.Start() 启动我的代码时进行调试

    假设我有一个 C WinForms 应用程序 并且它是由外部程序启动的 只需使用Process Start MyModule exe 我尝试使用以下命令来调试我的代码我的项目属性 gt Debug gt 开始行动 gt 启动外部程序 设置正
  • 不兼容的库版本:nokogiri.bundle 需要版本 8.0.0 或更高版本,但 libiconv.2.dylib 提供版本 7.0.0

    为了在我的 mac 上为 Rails 项目安装 mysql 我遵循了安装自制程序并删除 mac 端口的在线建议 这就是问题开始的地方 Rails 项目无法构建 我得到这个 rake prereqs rake 中止 dlopen Users
  • 提前预取奇怪的行为

    我正在使用 Twitter 的 typeahead 的一个非常基本的设置 我有两个不同的搜索字段 因此有两个预输入初始化 JavaScript document ready function input search event typea
  • 如何使用 JavaScript 用一个 if 检查数组中的多个元素?

    我的数组中有 1 个或多个项目 对于这个例子 假设它们是 65 66 67 如何 如果可能的话 只执行一个 if 条件来检查匹配 例如 var keyArray 65 66 67 if e keyCode any item in keyAr
  • Hive 数据存储在哪里?

    我对配置单元存储数据的位置有点困惑 它将数据存储在 HDFS 还是 RDBMS 中 Hive Meta 存储是否使用 RDBMS 来存储 Hive 表元数据 提前致谢 Hive 数据存储在其中之一Hadoop 兼容文件系统 https cw
  • ViewPager 内部片段问题

    我在查看某些片段内部的寻呼机时遇到问题 为了使用视图寻呼机 我使用 FragmentPagerAdapter 当然我得到了java lang IllegalStateException 递归进入executePendingTransacti
  • 更改淘汰赛绑定的应用顺序

    我正在创建一个 Knockout 绑定 它将作为 jQuery 小部件的包装器 该小部件将事件处理程序应用于子元素 不幸的是 小部件的事件处理直接应用于子元素 而不是委托 问题是我有一个foreach绑定在同一元素上 但我需要应用自定义绑定
  • mySQL 中的 NOT DISTINCT 查询

    我被要求在一个简单的员工数据库列上为此创建一个查询 包括 ninumber 名字 姓氏 地址 SuperVisorNiNumber 员工和主管都保存在同一张表中 并通过他们的编号进行引用 我被要求构建的查询是 v 查找员工的 NI 号码 员
  • 如果给函数一个列表,则自动使用列表理解/map() 递归

    作为一名 Mathematica 用户 我喜欢自动 遍历列表 的函数 Mathematica 人们称之为 请参阅http reference wolfram com mathematica ref Listable html http re
  • 如何使用OCR(TesseractOCR)php库

    我使用此链接克隆了 OCR 的 git 库 git clone git github com thiagoalessio tesseract ocr for php git 然后我只需按照以下步骤包含所需的文件example http th
  • 在 SQL Server 中添加两个列值来填充第三列,这可以在没有触发器/存储过程的情况下完成吗?

    对此我有一个非常具体的问题 我知道我可以使用SUM然而 为了对两列的值求和 除了运行基本查询之外 还需要处理一些其他要求 表中需要存在第三列 其中将包含两列的值 每当创建行或更新其他列中的两个值中的任何一个时 都需要更新第三列 是否可以通过
  • javafx快照不显示应用程序或场景

    您好 我正在使用 JavaFx WebView 创建 HTML 页面的屏幕截图 它工作正常 但我想知道是否可以在不启动图形 Windows 中的应用程序的情况下执行此操作 我的意思是没有比这更轻量级的方法来获取屏幕截图 public cla
  • Javascript .innerHTML 但不包括内部 div

    考虑到我有这个div div class ResCheckIn div class ResDtlLabel Check in div Thursday October 18 2018 div 我只是想获取字符串 Thursday Octob
  • 调用本机函数“ISNULL”时参数计数不正确

    我有一个查询试图从 MS SQL Server 2008 转换为 MySQL 它在 MSSQL 上运行良好 我收到错误 Incorrect parameter count in the call to native function ISN
  • 为什么我不能 mmap /proc/self/maps?

    具体来说 为什么我可以这样做 FILE fp fopen proc self maps r char buf 513 buf 512 NULL while fgets buf 512 fp gt NULL printf s buf 但不是这
  • 应用程序线程与服务线程

    将冗长的网络访问代码放置在活动的线程或服务的线程中有何优点 缺点 对申请有何影响 我正在编写一个流音频播放器 从我到目前为止所读到的内容来看 将代码放入服务中仍然会最终阻塞应用程序 因此需要一个新线程 有谁知道放置这段代码是否更有意义在一项
  • React 中的异步 xmlhttprequest

    我正在尝试在react中实现异步XMLHttpRequest 这是我的尝试 var xhr new XMLHttpRequest var json obj status false xhr open GET https jsonplaceh