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




相关文章
|
9天前
|
JavaScript
typeScript基础(5)_对象的类型-interfaces接口
本文介绍了TypeScript中接口(interfaces)的基本概念和用法,包括如何定义接口、接口的简单使用、自定义属性、以及如何使用`readonly`关键字定义只读属性。接口在TypeScript中是定义对象形状的重要方式,可以规定对象的必有属性、可选属性、自定义属性和只读属性。
23 1
|
2月前
|
JavaScript 前端开发
【Vue面试题二十五】、你了解axios的原理吗?有看过它的源码吗?
这篇文章主要讨论了axios的使用、原理以及源码分析。 文章中首先回顾了axios的基本用法,包括发送请求、请求拦截器和响应拦截器的使用,以及如何取消请求。接着,作者实现了一个简易版的axios,包括构造函数、请求方法、拦截器的实现等。最后,文章对axios的源码进行了分析,包括目录结构、核心文件axios.js的内容,以及axios实例化过程中的配置合并、拦截器的使用等。
【Vue面试题二十五】、你了解axios的原理吗?有看过它的源码吗?
|
2月前
|
JavaScript 前端开发
【Vue面试题二十七】、你了解axios的原理吗?有看过它的源码吗?
文章讨论了Vue项目目录结构的设计原则和实践,强调了项目结构清晰的重要性,提出了包括语义一致性、单一入口/出口、就近原则、公共文件的绝对路径引用等原则,并展示了单页面和多页面Vue项目的目录结构示例。
|
24天前
|
JavaScript 前端开发 开发者
vue中使用axios请求post接口,请求会发送两次
vue中使用axios请求post接口,请求会发送两次
|
10天前
|
数据采集 JavaScript 前端开发
使用 TypeScript 接口优化数据结构
使用 TypeScript 接口优化数据结构
|
7天前
axios全局做节流,解决多次点击导致多次请求接口
本文介绍了如何在Axios请求中实现全局节流,以防止用户快速多次点击导致重复发送相同请求的问题。
23 2
|
6天前
|
JavaScript
vue 中 axios 的安装及使用
本文介绍了在Vue项目中安装和使用axios的方法。首先通过命令`npm install axios --save-dev`安装axios,然后在组件的`created`生命周期钩子中使用`axios.get`异步获取数据,并将获取的数据更新到组件的`data`中。文中提供了完整的示例代码,包括安装命令、验证安装成功的步骤、Vue组件的模板、脚本和样式。
vue 中 axios 的安装及使用
|
12天前
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
18 4
|
9天前
|
JavaScript 前端开发
vue配合axios连接express搭建的node服务器接口_简单案例
文章介绍了如何使用Express框架搭建一个简单的Node服务器,并使用Vue结合Axios进行前端开发和接口调用,同时讨论了开发过程中遇到的跨域问题及其解决方案。
12 0
vue配合axios连接express搭建的node服务器接口_简单案例
|
2月前
|
JSON JavaScript 前端开发
【Vue面试题二十四】、Vue项目中有封装过axios吗?主要是封装哪方面的?
这篇文章讨论了在Vue项目中封装axios的最佳实践,包括设置接口请求前缀、请求头、状态码、请求方法的封装,以及如何使用请求和响应拦截器来处理token和响应状态,从而简化HTTP请求的配置和错误处理,提高代码的可维护性。
【Vue面试题二十四】、Vue项目中有封装过axios吗?主要是封装哪方面的?
下一篇
无影云桌面