react+?ts?vite搭建及二次封裝請(qǐng)求的過(guò)程解析
1.搭建項(xiàng)目
npm create vite

2.下載axios
npm install axios
打開項(xiàng)目創(chuàng)建基本項(xiàng)目結(jié)構(gòu)

3.創(chuàng)建http文件夾下index.ts
引入axios
import axios, {
AxiosResponse,
AxiosInstance,
InternalAxiosRequestConfig,
} from "axios";重新創(chuàng)建axios
const instance: AxiosInstance = axios.create({
baseURL:
// vite 環(huán)境變量判斷
import.meta.env.MODE === "development"
? "/api"
: import.meta.env.VITE_APP_BASE_URL,
timeout: 10000,
});創(chuàng)建攔截器
instance.interceptors.request.use((config: InternalAxiosRequestConfig) => {
//進(jìn)行特殊請(qǐng)求操作
return config;
});
instance.interceptors.response.use((response: AxiosResponse) => {
return response.data;
});封裝請(qǐng)求方法
export function get<T>(
url: string,
params?: CustomObject,
config?: CustomObject
): Promise<ResultData> {
return instance.get(url, { params, ...config });
}
export function post<T>(
url: string,
params?: CustomObject,
config?: CustomObject
): Promise<ResultData> {
return instance.post(url, params, config);
}
export function put<T>(
url: string,
params?: CustomObject,
config?: CustomObject
): Promise<ResultData> {
return instance.put(url, params, config);
}導(dǎo)出
export default instance;
完整代碼
// http/index.ts
import axios, {
AxiosResponse,
AxiosInstance,
InternalAxiosRequestConfig,
} from "axios";
const instance: AxiosInstance = axios.create({
baseURL:
import.meta.env.MODE === "development"
? "/api"
: import.meta.env.VITE_APP_BASE_URL,
timeout: 10000,
});
instance.interceptors.request.use((config: InternalAxiosRequestConfig) => {
//進(jìn)行特殊請(qǐng)求操作
return config;
});
instance.interceptors.response.use((response: AxiosResponse) => {
return response.data;
});
export function get<T>(
url: string,
params?: CustomObject,
config?: CustomObject
): Promise<ResultData> {
return instance.get(url, { params, ...config });
}
export function post<T>(
url: string,
params?: CustomObject,
config?: CustomObject
): Promise<ResultData> {
return instance.post(url, params, config);
}
export function put<T>(
url: string,
params?: CustomObject,
config?: CustomObject
): Promise<ResultData> {
return instance.put(url, params, config);
}
export default instance;
使用
// api.ts
import { get, post } from "../http/index";
// 文章列表
export const blogList = (data: CustomObject): Promise<ResultData> =>
get("/api/posts", data);到此這篇關(guān)于react+ ts vite搭建及二次封裝請(qǐng)求的文章就介紹到這了,更多相關(guān)react二次封裝請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue.js框架實(shí)現(xiàn)表單排序和分頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了vue.js框架實(shí)現(xiàn)表單排序和分頁(yè)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
vue項(xiàng)目中使用bpmn-自定義platter的示例代碼
這篇文章主要介紹了vue項(xiàng)目中使用bpmn-自定義platter的實(shí)例代碼,本文通過(guò)代碼截圖相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
Vue3實(shí)現(xiàn)粒子動(dòng)態(tài)背景的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Vue3實(shí)現(xiàn)粒子動(dòng)態(tài)背景,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起了解一下2023-11-11
在Vue3中使用provide和inject進(jìn)行依賴注入的代碼詳解
在現(xiàn)代前端開發(fā)中,Vue.js已經(jīng)成為了非常流行的框架之一,它提供了極大的靈活性和可維護(hù)性,今天我們要探討的是Vue?3中的provide和inject功能,這是一種用于在組件樹中進(jìn)行依賴注入的方法,需要的朋友可以參考下2024-06-06
使用canvas實(shí)現(xiàn)一個(gè)vue彈幕組件功能
這篇文章主要介紹了使用canvas實(shí)現(xiàn)一個(gè)vue彈幕組件功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11
Vue SPA單頁(yè)應(yīng)用首屏優(yōu)化實(shí)踐
這篇文章主要介紹了Vue SPA單頁(yè)應(yīng)用首屏優(yōu)化實(shí)踐,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
詳解Vue 數(shù)據(jù)更新了但頁(yè)面沒有更新的 7 種情況匯總及延伸總結(jié)
這篇文章主要介紹了詳解Vue 數(shù)據(jù)更新了但頁(yè)面沒有更新的 7 種情況匯總及延伸總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05

