日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

如何在 React 中使用 Axios 庫

來源: 責編: 時間:2023-12-01 17:14:22 298觀看
導讀開發 Web 應用程序中最重要的概念之一是數據獲取。 請求是應用程序功能的基礎,無論您是從內容 API 還是以產品數據形式從后端獲取數據,都必須以清晰、可擴展且非冗余的方式處理。今天給大家分享下如何在 React 使用 Axi

OAs28資訊網——每日最新資訊28at.com

開發 Web 應用程序中最重要的概念之一是數據獲取。 請求是應用程序功能的基礎,無論您是從內容 API 還是以產品數據形式從后端獲取數據,都必須以清晰、可擴展且非冗余的方式處理。今天給大家分享下如何在 React 使用 Axios 庫,在分享使用前,我們先詳細的了解下什么是 Axios。OAs28資訊網——每日最新資訊28at.com

什么是 Axios?

Axios 是一個基于 promise 的 HTTP 庫,可以用在 JavaScript 和 Node.js 使中。它可以發送 get、post、put、delete 等請求,并且支持請求攔截、響應攔截、超時設置、請求取消等功能。Axios 使用簡單,代碼簡潔,并且跨平臺兼容性較好。OAs28資訊網——每日最新資訊28at.com

以下示例簡單的展示了在原生 JS 中,如何使用 Axios。OAs28資訊網——每日最新資訊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 將其安裝到您的項目中,安裝方法如下:OAs28資訊網——每日最新資訊28at.com

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

簡單的在 React 中進行調用

安裝完成后,你可以在你的 React 應用中輕松使用 axiosOAs28資訊網——每日最新資訊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 進行多次調用怎么辦?每次調用都傳遞使用的配置都是相同的,所以調整后的代碼如下?OAs28資訊網——每日最新資訊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 的開頭,使您不必重復它)和請求頭。OAs28資訊網——每日最新資訊28at.com

上面的代碼現在更容易閱讀和縮放;唯一剩下的冗余操作是對每個調用進行錯誤檢查。OAs28資訊網——每日最新資訊28at.com

進一步完善和優化代碼

將公共的邏輯抽取到一個自定義的 API 請求類中,新建文件 src/utils/api.ts ,示例代碼如下:OAs28資訊網——每日最新資訊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    }  }}

接下來在組件中進行調用,示例代碼如下:OAs28資訊網——每日最新資訊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()}, [])

現在多余的錯誤捕獲也消失了 ,代碼是不是干凈許多。OAs28資訊網——每日最新資訊28at.com

總結

今天的分享就到這里,你覺得這個實現怎么樣?這對你有幫助嗎?請在評論區分享您的想法。OAs28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-35874-0.html如何在 React 中使用 Axios 庫

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 接口中的大事務,該如何進行優化?

下一篇: 深入了解 React Fiber:應用與源碼實現

標簽:
  • 熱門焦點
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • 分享六款相見恨晚的PPT模版網站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網站旨在為全球Office用戶提供豐富的高品質原創PPT模板、實用文檔、數據圖表及個性化定制服務。優點:OfficePLUS是微軟官方網站,囊括PPT模板、Word模
  • 量化指標是與非:挽救被量化指標扼殺的技術團隊

    作者 | 劉新翠整理 | 徐杰承本文整理自快狗打車技術總監劉新翠在WOT2023大會上的主題分享,更多精彩內容及現場PPT,請關注51CTO技術棧公眾號,發消息【WOT2023PPT】即可直接領取
  • 三分鐘白話RocketMQ系列—— 如何發送消息

    我們知道RocketMQ主要分為消息 生產、存儲(消息堆積)、消費 三大塊領域。那接下來,我們白話一下,RocketMQ是如何發送消息的,揭秘消息生產全過程。注意,如果白話中不小心提到相關代
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • iQOO Neo8系列今日官宣:首發天璣9200+ 全球安卓最強芯!

    在昨日舉行的的聯發科新一代旗艦芯片天璣9200+的發布會上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發搭載這款當前性能最強大的移動平臺
  • 英特爾Xe HPG游戲顯卡:擁有512EU,單風扇版本

    據10 月 30 日外媒 TheVerge 消息報道,英特爾 Xe HPG Arc Alchemist 的正面實被曝光,不僅擁有 512 EU 版顯卡,還擁有 128EU 的單風扇版本。另外,這款顯卡 PCB
  • 榮耀Magic4 至臻版 首創智慧隱私通話 強勁影音系統

    2022年第一季度臨近尾聲,在該季度內,許多品牌陸續發布自己的最新產品,讓大家從全新的角度來了解當今的手機技術。手機是電子設備中,更新迭代十分迅速的一款產品,基
  • 北京:科技教育體驗基地開始登記

      北京“科技館之城”科技教育體驗基地登記和認證工作日前啟動。首批北京科技教育體驗基地擬于2023年全國科普日期間掛牌,后續還將開展常態化登記。  北京科技教育體驗基
Top 主站蜘蛛池模板: 郑州市| 山阳县| 多伦县| 铁岭市| 尉犁县| 上高县| 滕州市| 广宗县| 通江县| 蒙城县| 渝北区| 塔河县| 崇义县| 彭山县| 乐亭县| 蒙城县| 新乡县| 防城港市| 嘉峪关市| 华池县| 三河市| 花莲县| 南开区| 库车县| 兴安盟| 若羌县| 富民县| 神农架林区| 张家港市| 霍林郭勒市| 辽中县| 新源县| 铅山县| 河北省| 巧家县| 邮箱| 红原县| 万全县| 海林市| 瓮安县| 涿州市|