ts + axios + useRequest (ahooks)—— 实现请求封装

现在越来越多的项目开始ts化,我们今天就一块学习一下,关于ts的请求封装。

首先要安装两个依赖:

npm i axios -S

npm i ahooks -S

引入:

javascript 复制代码
import { useRequest } from 'ahooks';
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';

定义一个泛型接口,用于指定请求参数和响应数据的类型

javascript 复制代码
interface RequestParams<T> {
  url: string;
  method: string;
  data?: T;
}

// 定义一个范型函数,用于发送 GET 请求
function get<T>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {
  return axios.get<T>(url, config);
}

// 定义一个范型函数,用于发送 POST 请求
function post<T>(params: RequestParams<T>, config?: AxiosRequestConfig): Promise<AxiosResponse<T>> {
  return axios.post<T>(params.url, params.data, config);
}

使用ahooks的useRequest:

javascript 复制代码
 // 使用 useRequest hooks 发送 GET 请求
  const { data, loading, error } = useRequest<{ name: string }>('https://api.example.com/data', {
    requestMethod: () => get('https://api.example.com/data'),
  });

直接使用get、post:

javascript 复制代码
// 调用 GET 方法
get<{ name: string }>('https://api.example.com/data')
  .then(response => {
    console.log(response.data.name);
  })
  .catch(error => {
    console.error(error);
  });

// 调用 POST 方法
const postData = { name: 'John' };
const postParams = { url: 'https://api.example.com/data', method: 'post', data: postData };
post<{ status: string }>(postParams)
  .then(response => {
    console.log(response.data.status);
  })
  .catch(error => {
    console.error(error);
  });
相关推荐
天天扭码10 分钟前
从数组到对象:JavaScript 遍历语法全解析(ES5 到 ES6 + 超详细指南)
前端·javascript·面试
拉不动的猪11 分钟前
前端开发中常见的数据结构优化问题
前端·javascript·面试
街尾杂货店&12 分钟前
css word
前端·css
Мартин.14 分钟前
[Meachines] [Hard] CrimeStoppers LFI+ZIP-Shell+Firefox-Dec+DLINK+rootme-0.5
前端·firefox
冰镇生鲜15 分钟前
快速静态界面 MDC规则约束 示范
前端
技术与健康28 分钟前
【解读】Chrome 浏览器实验性功能全景
前端·chrome
Bald Monkey36 分钟前
【Element Plus】解决移动设备使用 el-menu 和 el-sub-menu 时,子菜单需要点击两次才会隐藏的问题
前端·elementui·vue·element plus
小小小小宇1 小时前
PC和WebView白屏检测
前端
天天扭码1 小时前
ES6 Symbol 超详细教程:为什么它是避免对象属性冲突的终极方案?
前端·javascript·面试
小矮马1 小时前
React-组件和props
前端·javascript·react.js