以下是自己摸索整出来的一个方法封装思路,如有错误,望大佬体谅
utils/tool/toolClass.ts 文件
import { almightyDeviceTypeModel } from "./model";
//表格列表的状态类型转换,list是定义好选择框结构,data是接口传入的数字,value和label是解决自定义的选择框结构
const almightyDeviceType = (
list: Array<almightyDeviceTypeModel>,
data: number | string,
value: string,
label: string
) => {
let ObjValue = "value";
let ObjLabel = "label";
let result = "";
if (value && label) {
ObjValue = value;
ObjLabel = label;
}
list.map((item) => {
if (item[ObjValue] == data) {
result = item[ObjLabel];
}
});
return result;
};
//接口重调
const retry = (fn=(e:object)=>{},params:object,frequency:number) =>{
return new Promise(async (resolve,reject)=>{
while(frequency--){
try{
const res = await fn(params)
resolve(res);
break;
}catch(error){
if(frequency<=0){
reject(error)
}
}
}
})
}
//方法注册
const methodClass = {
almightyDeviceType,
retry
};
//抛出去
export default methodClass;
utils/tool/model.ts 数据模型存在放位置,不用ts可忽略
export type almightyDeviceTypeModel = object | any | Array<any>;
utils/index.ts 主文件
export { default as methodClass } from "./tool/toolClass";
页面使用
import { methodClass } from "@/utils/index";
import axios from 'axios';
function HomePage(){
//方法重调
const getApi = (params:object) =>{
return axios.get("路径",{params})
}
//使用方法
methodClass.retry(getApi,{a:1,b:2},3).then(res=>{}).catch(err=>{})
return (
<div>
</div>
);
}
export default HomePage;
大概就这样