getfromcode

vue3-002 ts泛型封装axios请求

前端开发
文章摘要

editorial_too_long:1444 import { reactive , toRefs } from 'vue' ; import axios from 'axios' ; interface TResult < T > { result : null | T ; loadding : boolean ; error : any…

已有 170 人浏览 发布 2026-01-15 更新 2026-09-09
editorial_too_long:1444

QQ_1768450615682.png


import{reactive,toRefs}from'vue';

importaxiosfrom'axios';

interfaceTResult<T> {

result:null|T;

loadding:boolean;

error:any;

}

constuseUrlLoader=<T>(url:string)=>{

constdata:TResult<T>=reactive({

result:null,

loadding:true,

error:null,

});

axios

.get(url)

.then((rawData)=>{

data.result=rawData.data;

})

.catch((e)=>{

data.error=e;

})

.finally(()=>{

data.loadding=false;

});

returntoRefs(data);

};