React技巧之发出http请求
原文链接:https://bobbyhadz.com/blog/react-send-request-on-click
正文从这开始~
总览
在React中,通过点击事件发出http请求:
- 在元素上设置
onClick属性。 - 每当元素被点击时,发出http请求。
- 更新
state变量,并重新渲染数据。
如果你使用
axios,请向下滚动到下一个代码片段。
import {useState} from 'react';
const App = () => {
const [data, setData] = useState();
const [isLoading, setIsLoading] = useState(false);
const [err, setErr] = useState('');
const handleClick = async () => {
setIsLoading(true);
try {
const response = await fetch('<https://reqres.in/api/users>', {
method: 'POST',
body: JSON.stringify({
name: 'John Smith',
job: 'manager',
}),
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
},
});
if (!response.ok) {
throw new Error(`Error! status: ${response.status}`);
}
const result = await response.json();
console.log('result is: ', JSON.stringify(result, null, 4));
setData(result);
} catch (err) {
setErr(err.message);
} finally {
setIsLoading(false);
}
};
console.log(data);
return (
<div>
{err && <h2>{err}</h2>}
<button onClick={handleClick}>Make request</button>
{isLoading && <h2>Loading...</h2>}
{data && (
<div>
<h2>Name: {data.name}</h2>
<h2>Job: {data.job}</h2>
</div>
)}
</div>
);
};
export default App;
fetch
上述示例向我们展示了,在React中,如何通过点击按钮发送HTTP POST 请求。
我们在button元素上设置了onClick属性,因此每当按钮被点击时,handleClick函数将会被调用。我们通过async关键字标记了handleClick函数,因此我们可以使用await关键字来等待内部的Promise返回。
在
handleClick函数中,我们等待POST请求的完成并更新state变量。
该示例使用了原生的 fetch API,但如果你使用axios依赖包,这个概念也适用。
axios
下面是如何使用axios包在点击按钮时发出http POST请求。
如果你决定使用axios,请确保你已经通过运行npm install axios安装了该软件包。
import {useState} from 'react';
import axios from 'axios';
const App = () => {
const [data, setData] = useState();
const [isLoading, setIsLoading] = useState(false);
const [err, setErr] = useState('');
const handleClick = async () => {
setIsLoading(true);
try {
const {data} = await axios.post(
'<https://reqres.in/api/users>',
{name: 'John Smith', job: 'manager'},
{
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
},
},
);
console.log(JSON.stringify(data, null, 4));
setData(data);
} catch (err) {
setErr(err.message);
} finally {
setIsLoading(false);
}
};
console.log(data);
return (
<div>
{err && <h2>{err}</h2>}
<button onClick={handleClick}>Make request</button>
{isLoading && <h2>Loading...</h2>}
{data && (
<div>
<h2>Name: {data.name}</h2>
<h2>Job: {data.job}</h2>
</div>
)}
</div>
);
};
export default App;
上述示例向我们展示了,如何使用axios在点击按钮时,发出http POST 请求。
如果你使用
axios,请确保你已经在项目的根目录下运行npm install axios来安装该包。
使用axios包时的语法更简洁一些,我们要处理的实现细节也更少,但概念是一样的。
我们必须在一个按钮元素上设置onClick属性,并在每次点击按钮时发出一个HTTP请求。
React技巧之发出http请求的更多相关文章
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...
- 发出HTTP请求并获得HTTP响应
发出HTTP请求并获得HTTP响应的过程如下: (1)定义HTTP请求HttpPut(HttpPost/HttpGet/HttpDelete)等: (2)定义各种Header,并加入HttpPut中: ...
- 转:无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
今天看到一篇文章感觉不错,收藏转载下. 原文地址:http://blog.csdn.net/sntyy/article/details/2090347 版权为原作者所有 无法向会话状态服务器发出会话状 ...
- React Native中的网络请求fetch和简单封装
React Native中的网络请求fetch使用方法最为简单,但却可以实现大多数的网络请求,需要了解更多的可以访问: https://segmentfault.com/a/1190000003810 ...
- 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求
转http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/ 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求 ...
- 无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动
原文链接:http://www.cnblogs.com/IT-Bear/archive/2012/01/04/2311546.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET S ...
- System.Web.HttpException: 无法向会话状态服务器发出会话状态请求
System.Web.HttpException: 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器 ...
- [Postman]发出SOAP请求(18)
使用Postman发出SOAP请求: 将SOAP端点作为URL.如果您使用的是WSDL,那么请将WSDL的路径作为URL. 将请求方法设置为POST. 打开原始编辑器,并将正文类型设置为“text / ...
- 解决React Native使用Fetch API请求网络报Network request failed
问题来源: 1 . 在测试fetch数据请求时,Xcode9.0以上的无法请求https, 需要在Xcode中加载项目后修改Info.plist的相关配置,具体如下参考 问题及解决方法一模一样,不再重 ...
随机推荐
- Go 框架学习之旅 ① 深入解析 net/http 启动服务的层级逻辑
Web Server. net/http 标准库怎么学. 库函数. 结构定义. 结构函数. 思维导图解析HTTP服务端. 层级逻辑. 创建框架的Server结构. OSI参考模型. TCP/IP五层模 ...
- Java学习day32
生产与消费者问题:假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者从仓库中取走产品:如果仓库中没有产品,生产者就将产品放入仓库,否则就停止生产等待:如果仓库中有产品,消费者就取走,否 ...
- 迷惑小错 之 :requests.exceptions.ProxyError
缘由 当打开代理或者抓包工具时 pycharm运行发包请求报错: requests.exceptions.ProxyError.关掉代理后又能正常的请求,这样对于我们日常操作很不方便吗.四处查找资料无 ...
- GAIA-IR: GraphScope 上的并行化图查询引擎
在本文中,我们将介绍 GraphScope 图交互式查询引擎 GAIA-IR,它支持高效的 Gremlin 语言表达的交互图查询,同时高度抽象了图上的查询计算,具有高可扩展性. 背景介绍 在海量数据的 ...
- STM8S103F3P6 开发环境笔记
STM8S103F3 产品手册 https://www.st.com/resource/en/datasheet/stm8s103f2.pdf 内核 16 MHz advanced STM8 core ...
- mybaitis查询 (数据库与实体类字段名不相同)
1.这是我的数据库字段名和实体类字段名 2.方法 方法一: 查询的结果标题 会跟实体类的属性一一匹配,一定要一致就算数据库字段和属性不一致,我们可以把查询结果设置一个别名,让别名=属性名 方法二:使用 ...
- 了解mybatis
什么是mybatis? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作.MyBati ...
- 超清晰的 DNS 原理入门指南,看这一篇就够了~
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! DNS 是互联网核心协议之一.不管是上网浏览,还是编程开 ...
- 用 Docker 快速搭建 Kafka 集群
开源Linux 一个执着于技术的公众号 版本 •JDK 14•Zookeeper•Kafka 安装 Zookeeper 和 Kafka Kafka 依赖 Zookeeper,所以我们需要在安装 Kaf ...
- 最佳案例 | QQ 相册云原生容器化之路
关于我们 更多关于云原生的案例和知识,可关注同名[腾讯云原生]公众号~ 福利: ①公众号后台回复[手册],可获得<腾讯云原生路线图手册>&<腾讯云原生最佳实践>~ ②公 ...