Vue3-TypeScript-接口-async-axios用法

简介: 1.书接上文vue3 ts核心语法2.这个主要是接口类型 和axios的用法3.还有promise async wait

1.前言


1.书接上文vue3 ts核心语法

2.这个主要是接口类型 和axios的用法

3.还有promise  async  wait


2. TS 中 生命周期的写法


既然是模拟请求,肯定要走钩子里面写

2.1  首先回顾下 TS当中data 的用法

是直接在组件写的


@Options({
  props: {
    msg: String,
  },
})
export default class HelloWorld extends Vue {
msg!: string;
 characters:string[] = ["类型注解","编译性的语言"]
}


2.2  事件的写法

也是在组件中直接写的


addCharacter(e: KeyboardEvent) {}


2.3 钩子的写法

  1. 也是直接写的哦
  2. 所以注意名字不要敲错了,错了就理解成自定义函数了


// **************生命周期 钩子
created() {
 this.characters = [
      { id: 1, name: "类型注解", selected: true },
      { id: 2, name: "编译性的语言", selected: false },
    ];
}



3. 接口类型定义


模拟 数据接口


// *********** 泛型 可以是接口 类 ,方法   非常广泛 的
interface Result<T> {
  ok: 0 | 1;
  data: T;
}
function getList<T>(): Result<T> {
  const data: any = [
    { id: 1, name: "类型注解", selected: true },
    { id: 2, name: "编译性的语言", selected: false },
  ];
  return{
    ok: 1,
    data,
  };
}



4. 使用接口


4.1 核心代码


// **************生命周期 钩子
created() {
 this.characters = getList<SelectCharacter[]>().data
}


4.2 拆解分析

1.我们知道数据返回的类型,所以这里注解下返回的类型

2.返回的不对,就会报错


5. promise模拟异步


5.1 接口修改


function getList<T>(): Promise<Result<T>> {
  const data: any = [
    { id: 1, name: "类型注解", selected: true },
    { id: 2, name: "编译性的语言", selected: false },
  ];
  return Promise.resolve({
    ok: 1,
    data,
  });
}


5.2 简要分析

1.整个返回的结果用Promise包裹一层

2.最终的结果就像ajax一样异步的,用Promiseresolve吐出去


6. 接口使用


6.1 简要代码


// **************生命周期 钩子
 async created() {
     this.characters =  (await  getList<SelectCharacter[]>()).data
}


6.2 写法2


async created() {
 getList<SelectCharacter[]>().then((result) => {
      this.characters = result.data;
    });
}


6.3 分析

1.其实这个  awaitthen一样 都是脱去 Promise的一层壳

2.因为我们在定义getList的数据的时候里面是用 resolve包裹一层的

3.目前awaitasync联合起来的用法在公司其实也比较常见

4.整体还是 Promise的用法 脱壳


7. mock假数据


7.1 mock配置

vue.config.js


module.exports = {
  lintOnSave: false,
  devServer:{
    open:true,
    before(app){
      app.get("/api/list",(req,res)=>{
        res.json( [
          { id: 1, name: "类型注解", selected: true },
          { id: 2, name: "编译性的语言", selected: false },
        ])
      })
    }
  }
}


7.2 重启

修改了这个vue.config.js文件 需要重启


8 axios


8.1 环境

npm i axios 安装

在需要的文件引入


import Axios from "axios";


8.2 发请求


// **************生命周期 钩子
  // 怎么用 直接写呗
  async created() {
    Axios.get<SelectCharacter[]>("/api/list").then(res=>{
      this.characters = res.data;
    })
}


async await写法


this.characters = (await  Axios.get<SelectCharacter[]>("/api/list")).data


8.3 图示

K03Z{]EG$RW%Q7M9CO[J_33.png




相关文章
|
18天前
|
JavaScript
vue封装axios(用interceptors封装)
vue封装axios(用interceptors封装)
17 0
|
18天前
|
JSON 前端开发 JavaScript
3分钟让你学会axios在vue项目中的基本用法(建议收藏)
3分钟让你学会axios在vue项目中的基本用法(建议收藏)
142 0
|
18天前
|
XML JavaScript 前端开发
axios如何在vue中使用
axios如何在vue中使用
32 1
|
9天前
|
前端开发 JavaScript
1天搞定SpringBoot+Vue全栈开发 (7)Axios网络请求
1天搞定SpringBoot+Vue全栈开发 (7)Axios网络请求
|
18天前
|
JavaScript 前端开发 开发者
【Web 前端】TypeScript 中的接口是什么?
【5月更文挑战第1天】【Web 前端】TypeScript 中的接口是什么?
|
18天前
|
JavaScript 前端开发 开发者
【TypeScript技术专栏】TypeScript类型系统与接口详解
【4月更文挑战第30天】TypeScript扩展JavaScript,引入静态类型检查以减少错误。其类型系统包括基本类型、数组等,而接口是定义对象结构的机制。接口描述对象外形,不涉及实现,可用于规定对象属性和方法。通过声明、实现接口,以及利用可选、只读属性,接口继承和合并,TypeScript增强了代码的健壮性和维护性。学习和掌握TypeScript的接口对于大型项目开发至关重要。
|
18天前
|
存储 算法 JavaScript
< 今日小技巧:Axios封装,接口请求增加防抖功能 >
今天这篇文章,主要是讲述对axios封装的请求,由于部分请求可能存在延时的情况。使得接口可能存在会被持续点击(即:接口未响应的时间内,被持续请求),导致重复请求的问题,容易降低前后端服务的性能!故提出给axios封装的配置里面,新增一个防抖函数,用来限制全局请求的防抖。
< 今日小技巧:Axios封装,接口请求增加防抖功能 >
|
18天前
|
JSON JavaScript 前端开发
< 每日份知识快餐:axios是什么?如何在Vue中 封装 axios ? >
本文介绍了前端开发中常用的HTTP客户端库Axios,它基于Promise,支持浏览器和Node.js,特点是功能强大、支持Promise API和并发请求,并能拦截请求和响应。文章强调了理解Axios的内部原理和优化使用的重要性,不仅讲解了基本的安装、导入和使用方法,还阐述了为何选择Axios,包括其丰富的配置选项和良好的浏览器支持。此外,文章探讨了封装Axios的必要性,以减少重复代码和提高代码维护性,并给出了设置接口请求前缀、请求头、超时时间以及封装请求方法和拦截器的示例。通过封装,开发者可以更高效地管理和使用Axios,适应不同项目需求。
|
18天前
|
JSON 前端开发 JavaScript
Vue+Axios+SpringBoot后端同时接收文件和json作为请求参数
Vue+Axios+SpringBoot后端同时接收文件和json作为请求参数
43 0
|
18天前
|
前端开发 应用服务中间件 nginx
Vue+SpringBoot+Axios的跨域问题
Vue+SpringBoot+Axios的跨域问题
21 0