本文转载自:众成翻译
译者:iOSDevLog
链接:http://www.zcfy.cc/article/3816
原文:https://www.fullstackreact.com/30-days-of-react/day-14/
我们已准备好外部请求获取数据!今天我们来看一下调用外部API的第一步。
直到这一点,我们的应用基本上是静态的。即使我们从 github 显示的数据也是我们项目中包含的静态数据。我们的应用确实和我们使用的数据一样有趣, 因此让我们的应用更有趣。
查询远程数据
正常的浏览器工作流实际上是同步的。当浏览器接收 html 时, 它将解析 html 内容的字符串并将其转换为树对象 (这就是我们通常所指的 DOM 对象/DOM 树)。
当浏览器解析 DOM 树时, 当它遇到远程文件 (如and
标记) 时, 浏览器将请求这些文件 (并行), 但将同步执行它们 (以便维护它们在源中列出的顺序)。
如果我们想从异地获取一些数据怎么办?我们将在启动时对数据进行请求, 以在应用中填充数据。但是, 由于外部 api 请求的异步特性, _它_不一定那容易做到。
本质上, 这意味着我们必须在一段未知的时间内处理 javascript 代码, 以及实际发出 http 请求。幸运的是, 其他人已经处理这个问题很长一段时间, 我们现在有一些很好的方法来处理它。
从处理如何进行 http 请求开始, 我们将使用一个库 (称为 fetch
,, 它也是一个 web 标准) 使 http 请求更容易处理。
获取
为了使用获取, 我们需要在我们以前创建的应用中安装该库。让我们再次打开一个终端窗口, 使用npm
来安装 whatwg-fetch
库 (fetch
的实现)。在创建应用的同一目录中, 让我们调用:
`npm install --save whatwg-fetch`
安装了该库后, 我们可以向离线服务器发出请求。为了获得访问 fetch
库, 我们需要在脚本中import
该包。让我们更新我们的src/App.js
文件的前几行添加第二行:
import React, { Component } from 'react';
import 'whatwg-fetch';
// ...
whatwg-fetch
对象是唯一的, 因为它是少数几个库, 我们将使用它在global
对象上附加它的导出 (在浏览器的情况下, 这个对象是window
)。
不同于react
库, 我们不需要得到一个处理它的输出, 因为库使它在全局对象上可用。
在我们的项目中包含whatwg-fetch
库, 我们可以使用 fetch()
api 进行请求。然而, 在我们真正开始使用 fetch()
api 之前, 我们需要了解什么是承诺, 以及它们如何处理在介绍中讨论的异步。
我们明天会有 promises
。从第二周开始好的工作,, 明天见!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。