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

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

如何在 React 中使用 Axios 庫

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

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

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

什么是 Axios?

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

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

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

簡單的在 React 中進行調用

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

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

進一步完善和優化代碼

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

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

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

總結

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

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

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

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

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

標簽:
  • 熱門焦點
  • K60 Pro官方停產 第三方瞬間漲價

    雖然沒有官方宣布,但Redmi的一些高管也已經透露了,Redmi K60 Pro已經停產且不會補貨,這一切都是為了即將到來的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機在停產之后
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • Temu起訴SHEIN,跨境電商戰事升級

    來源 | 伯虎財經(bohuFN)作者 | 陳平安日前據外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein&ldquo;利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 網傳小米汽車開始篩選交付中心 建筑面積不低于3000平方米

    7月7日消息,近日有微博網友@長三角行健者爆料稱,據經銷商集團反饋,小米汽車目前已經開始了交付中心的篩選工作,要求候選場地至少有120個車位,建筑不能低
  • 華為HarmonyOS 4.0將于8月4日發布 或搭載AI大模型技術

    華為宣布HarmonyOS4.0將于8月4日正式發布。此前,華為已經針對開發者公布了HarmonyOS4.0,以便于開發者提前進行適配,也因此被曝光出了一些新系統的特性
  • 2299元起!iQOO Pad開啟預售:性能最強天璣平板

    5月23日,iQOO如期舉行了新品發布會,除了首發安卓最強旗艦處理器的iQOO Neo8系列新機外,還在發布會上推出了旗下首款平板電腦——iQOO Pad,其搭載了天璣
  • DRAM存儲器10月價格下跌,NAND閃存本月價格與上月持平

    10月30日,據韓國媒體消息,自今年年初以來一直在上漲的 DRAM 存儲器的交易價格僅在本月就下跌了近 10%,此次是全年首次降價,而NAND 閃存本月價格與上月持平。市
  • 電博會上海爾智家模擬500平大平層,還原生活空間沉浸式體驗

    電博會為了更好地讓參展觀眾真正感受到智能家居的絕妙之處,海爾智家的程傳嶺先生同樣介紹了展會上海爾智家的模擬500平大平層,還原生活空間沉浸式體驗。程傳
Top 主站蜘蛛池模板: 遂溪县| 灌南县| 霍林郭勒市| 普定县| 临泉县| 凭祥市| 太保市| 佛教| 邛崃市| 瑞丽市| 肥西县| 南城县| 通辽市| 那曲县| 光山县| 邯郸市| 荣昌县| 霸州市| 宜春市| 雅江县| 江孜县| 玉溪市| 尚义县| 杭锦后旗| 长宁区| 明光市| 南宁市| 新安县| 梧州市| 松原市| 图们市| 常熟市| 大同县| 航空| 淮北市| 海原县| 威远县| 庄河市| 旬阳县| 霞浦县| 河间市|