axios 与 TypeScript新闻案例

1 axios 与 TypeScript{#axios-and-ts}2 axios封装优化3 频道渲染{#case-channel}4 导航切换{#case-nav-toogel}5 列表更新{#case-list}

准备项目的基础结构

1 axios 与 TypeScript{#axios-and-ts}

掌握:掌握axios配合泛型设置响应数据类型

小结:

使用axios的时候怎么给返回数据提供类型?

axios.request<数据类型>() 其他请求方法类似 提供的类型要注意啥?

类型需要根据接口返回的数据类声明,或者根据接口文档

2 axios封装优化

优化axios数据获取和类型定义

封装axios import axios from 'axios'

const request = axios.create({

baseURL: 'http://geek.itheima.net/v1_0'

})

request.interceptors.request.use((config) => {

return config

})

request.interceptors.response.use((res) => {

return res.data?.data

})

export default request

使用

3 频道渲染{#case-channel}

完成:axios获取数据后频道列表渲染

步骤:

提取类型到 types 目录在组件初始化通过 axios.get 获取数据进行渲染

types/data.d.ts

// 频道对象

export type ChannelItem = {

id: number;

name: string;

};

// 频道接口响应数据

export type ChannelResData = {

channels: ChannelItem[];

}

ChannelNav.vue

4 导航切换{#case-nav-toogel}

完成:频道导航切换效果

切换的频道ID将来需要给 ArticleList 组件使用,所以在 App 组件定义数据在 ChannelNav 改变频道的时候,通过自定义事件传递给 App 组件使用和修改

默认选中

App.vue

ChannelNav.vue

// 2.完成切换效果

+defineProps<{ channelId: number }>()