1. 建立hook文件夹,在hook文件夹里面建立 useAxios.ts 文件,内容如下:
| import { ref } from 'vue'; |
| import axios from 'axios'; |
| |
| export default function<T>(url: string, method: string, param?: object) { |
| const loading = ref(true); |
| const data = ref<T | null>(null); |
| const errorMsg = ref(''); |
| |
| if (method === 'get') { |
| axios.get(url).then(res => { |
| loading.value = false; |
| data.value = res.data; |
| }).catch(err => { |
| loading.value = false; |
| errorMsg.value = err.message || '未知错误'; |
| }) |
| } |
| |
| if (method === 'post') { |
| axios.post(url, param).then(res => { |
| loading.value = false; |
| data.value = res.data; |
| }).catch(err => { |
| loading.value = false; |
| errorMsg.value = err.message || '未知错误'; |
| }) |
| } |
| |
| return { |
| loading, |
| data, |
| errorMsg |
| } |
| } |
2. 在组件中使用
| <script lang='ts'> |
| import { defineComponent } from 'vue' |
| import useAxios from './useAxios' |
| |
| interface dataProps { |
| n?: number, |
| total?: number, |
| money?: number |
| } |
| |
| export default defineComponent ({ |
| setup() { |
| const {loading, data, errorMsg} = useAxios<dataProps[]>('/myUrl/id=1','get') |
| |
| return { |
| loading, |
| data, |
| errorMsg |
| } |
| }, |
| }) |
| </script> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话