当前位置:首页 > 科技  > 软件

如何在 React 中使用 Axios 库

来源: 责编: 时间:2023-12-01 17:14:22 377观看
导读开发 Web 应用程序中最重要的概念之一是数据获取。 请求是应用程序功能的基础,无论您是从内容 API 还是以产品数据形式从后端获取数据,都必须以清晰、可扩展且非冗余的方式处理。今天给大家分享下如何在 React 使用 Axi

y5T28资讯网——每日最新资讯28at.com

开发 Web 应用程序中最重要的概念之一是数据获取。 请求是应用程序功能的基础,无论您是从内容 API 还是以产品数据形式从后端获取数据,都必须以清晰、可扩展且非冗余的方式处理。今天给大家分享下如何在 React 使用 Axios 库,在分享使用前,我们先详细的了解下什么是 Axios。y5T28资讯网——每日最新资讯28at.com

什么是 Axios?

Axios 是一个基于 promise 的 HTTP 库,可以用在 JavaScript 和 Node.js 使中。它可以发送 get、post、put、delete 等请求,并且支持请求拦截、响应拦截、超时设置、请求取消等功能。Axios 使用简单,代码简洁,并且跨平台兼容性较好。y5T28资讯网——每日最新资讯28at.com

以下示例简单的展示了在原生 JS 中,如何使用 Axios。y5T28资讯网——每日最新资讯28at.com

// 安装 axiosnpm install axios// 引入 axiosimport axios from 'axios'// 发送 get 请求axios.get('/user?ID=12345')  .then(function (response) {    console.log(response);  })  .catch(function (error) {    console.log(error);  });// 发送 post 请求axios.post('/user', {    firstName: 'Fred',    lastName: 'Flintstone'  })  .then(function (response) {    console.log(response);  })  .catch(function (error) {    console.log(error);  });

如何安装 Axios?

使用前,您须先使用 yarn 或 npm 将其安装到您的项目中,安装方法如下:y5T28资讯网——每日最新资讯28at.com

yarn add axios @types/axiosornpm install axios @types/axios

简单的在 React 中进行调用

安装完成后,你可以在你的 React 应用中轻松使用 axiosy5T28资讯网——每日最新资讯28at.com

import axios from "axios"type Product = {  id: string  name: string,}const [product, setProduct] = useState<Product | null>(null)const getData = async (): Promise<void> => {  const productData = await axios.get('https://sample.api/product', {    headers: {      'X-Custom-Header': '0123456789'    }  }).catch(error => {    console.log(error?.response.data)    return null  })  setProduct(productData?.data || null)}useEffect(() => {  getData()}, [])

多个请求的处理

在上面的示例中,axios 用于从具有自定义请求头的 API 进行检索数据。但是,如果您在呈现页面组件之前使用相同的配置对相同的 API 进行多次调用怎么办?每次调用都传递使用的配置都是相同的,所以调整后的代码如下?y5T28资讯网——每日最新资讯28at.com

import axios from "axios"type Product = {  id: string  name: string,}type Content = {  title: string,  body: string}const [product, setProduct] = useState<Product | null>(null)const [content, setContent] = useState<Content | null>(null)const getData = async (): Promise<void> => {  const axiosInstance = axios.create({    baseURL: 'https://sample.api',    headers: {      'X-Custom-Header': '0123456789'    }  })  const productData = await axiosInstance    .get('/product')    .catch(error => {      console.log(error?.response.data)      return null    }) const contentData = await axiosInstance  .get('/content').catch(error => {    console.log(error?.response.data)    return null  })  setProduct(productData?.data || null)  setContent(contentData?.data || null)}useEffect(() => {  getData()}, [])

实例的主要目的是创建一个新的具有自定义配置的axios实例;在上面的例子中,配置的逻辑是 baseURL(它将在每个调用的 URL 的开头,使您不必重复它)和请求头。y5T28资讯网——每日最新资讯28at.com

上面的代码现在更容易阅读和缩放;唯一剩下的冗余操作是对每个调用进行错误检查。y5T28资讯网——每日最新资讯28at.com

进一步完善和优化代码

将公共的逻辑抽取到一个自定义的 API 请求类中,新建文件 src/utils/api.ts ,示例代码如下:y5T28资讯网——每日最新资讯28at.com

import axios, { AxiosRequestConfig } from "axios"export const api = (config: AxiosRequestConfig) => {  const instance = axios.create(config)  return {    get: async (url: string) => {      const result = await instance.get<{ data: any }>(url).catch((error: any) => {        console.log(error?.response?.data)        return null      })      return result    }  }}

接下来在组件中进行调用,示例代码如下:y5T28资讯网——每日最新资讯28at.com

import { api } from "./utils/api"type Product = {  id: string  name: string,}type Content = {  title: string,  body: string}const [product, setProduct] = useState<Product | null>(null)const [content, setContent] = useState<Content | null>(null)const getData = async (): Promise<void> => {  const instance = api({    baseURL: 'https://sample.api',    headers: {      'X-Custom-Header': '0123456789'    }  })  const productData = await instance.get('/product')  const contentData = await instance.get('/content')  setProduct(productData?.data || null)  setContent(contentData?.data || null)}useEffect(() => {  getData()}, [])

现在多余的错误捕获也消失了 ,代码是不是干净许多。y5T28资讯网——每日最新资讯28at.com

总结

今天的分享就到这里,你觉得这个实现怎么样?这对你有帮助吗?请在评论区分享您的想法。y5T28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-35874-0.html如何在 React 中使用 Axios 库

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 接口中的大事务,该如何进行优化?

下一篇: 深入了解 React Fiber:应用与源码实现

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 太卷!Redmi MAX 100英寸电视便宜了:12999元买Redmi史上最大屏

    8月5日消息,从小米商城了解到,Redmi MAX 100英寸巨屏电视日前迎来官方优惠,到手价12999元,比发布价便宜了7000元,在大屏电视市场开卷。据了解,Redmi MAX 100
  • 印度登月最关键一步!月船三号今晚进入环月轨道

    8月5日消息,据印度官方消息,月船三号将于北京时间今晚21时30分左右开始近月制动进入环月轨道。这是该探测器能够成功的最关键步骤之一,如果成功将开始围
  • 0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    旭日森林无糖仙草乌龙茶510ml*15瓶平时要卖为79.9元,今日下单领取50元优惠券,到手价为29.9元。产品规格:0糖0卡0脂,添加草本仙草汁,清凉爽口,富含茶多酚,保留
  • 2023 年的 Node.js 生态系统

    随着技术的不断演进和创新,Node.js 在 2023 年达到了一个新的高度。Node.js 拥有一个庞大的生态系统,可以帮助开发人员更快地实现复杂的应用。本文就来看看 Node.js 最新的生
  • Automa-通过连接块来自动化你的浏览器

    1、前言通过浏览器插件可实现自动化脚本的录制与编写,具有代表性的工具就是:Selenium IDE、Katalon Recorder,对于简单的业务来说可快速实现自动化的上手工作。Selenium IDEKat
  • “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就&ldquo;胡锡进炒股是否知道认真报道&rdquo;展开讨论。有
  • 上海举办人工智能大会活动,建设人工智能新高地

    人工智能大会在上海浦江两岸隆重拉开帷幕,人工智能新技术、新产品、新应用、新理念集中亮相。8月30日晚,作为大会的特色活动之一的上海人工智能发展盛典人工
Top