vue3.0中TypeScript封装axios方法以及应用

useRequest.ts

// 引入axios
import axios from 'axios'
import { ref } from "vue"
// 发送ajax的请求
export default function<T> (url: string) {
    // 加载的状态
    const loading = ref(true)
    // 请求成功的数据
    const data = ref<T|null>(null)
    // 错误信息
    const errorMsg = ref(null)//坑 null类型
    // 发送请求
    axios.get(url).then(response => {
        // 改变加载状态
        loading.value = false
        data.value=response.data
    }).catch(error => {
          // 改变加载状态
        loading.value = false
        errorMsg.value=error.message||'未知错误'
        
    })
    return {
        loading,
        data,
        errorMsg
    }
}

app.vue

import useRequest from "./hooks/useRequest";
//定义泛型接口 规定函数返回data
interface Products {
  id: string;
  title: string;
  price: number;
}
 const { loading, data, errorMsg } = useRequest<Products[]>(
      "/data/products.json"
    ); //获取数组数据

products.json

[
    {
        "id":"1",
        "title":"华为手机",
        "price":3219
    },
    {
        "id":"002",
        "title":"小米手机",
        "price":1920
    }
]

版权声明:本文为weixin_44283589原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。