当前位置: 首页 > news >正文

Vue:Ajax

AJAX 允许我们在不刷新页面的情况下与服务器交互,实现:动态加载数据,提交表单信息,实时更新内容,与后端 API 通信。通常使用专门的 HTTP 客户端库来处理 AJAX 请求。

npm install axios
import axios from 'axios';export default {data() {return {users: []};},async mounted() {try {const response = await axios.get('https://api.example.com/users');this.users = response.data;} catch (error) {console.error('获取用户数据失败:', error);}}
};

创建 Axios 实例

// src/utils/request.js
import axios from 'axios';const api = axios.create({baseURL: 'https://api.example.com',timeout: 5000,headers: {'Content-Type': 'application/json'}
});// 请求拦截器
api.interceptors.request.use(config => {const token = localStorage.getItem('token');if (token) {config.headers.Authorization = `Bearer ${token}`;}return config;
});// 响应拦截器
api.interceptors.response.use(response => response.data,error => {if (error.response.status === 401) {// 处理未授权}return Promise.reject(error);}
);export default api;

AJAX 请求的最佳实践

1在合适的生命周期钩子中发起请求

created/mounted:组件初始化时获取数据
watch:监听路由或参数变化时重新获取数据

watch: {'$route.params.id': {handler(newId) {this.fetchData(newId);},immediate: true // 立即执行一次}
}

2处理加载状态

data() {return {isLoading: false,data: null,error: null};
},
methods: {async fetchData() {this.isLoading = true;this.error = null;try {this.data = await api.get('/data');} catch (err) {this.error = err.message;} finally {this.isLoading = false;}}
}

避免内存泄漏

在组件销毁前取消未完成的请求:

import axios from 'axios';export default {data() {return {cancelToken: axios.CancelToken.source()};},methods: {fetchData() {axios.get('/data', {cancelToken: this.cancelToken.token});}},beforeUnmount() {this.cancelToken.cancel('组件卸载,取消请求');}
};

http://www.xdnf.cn/news/914869.html

相关文章:

  • 学习STC51单片机30(芯片为STC89C52RCRC)
  • 【leetcode】递归,回溯思想 + 巧妙解法-解决“N皇后”,以及“解数独”题目
  • c++学习-this指针
  • 微信小程序带参分享、链接功能
  • ​​Android 如何查看CPU架构?2025年主流架构有哪些?​
  • 文字转语音
  • 安卓基础(Java 和 Gradle 版本)
  • Qt Quick Test模块功能及架构
  • Qt/C++学习系列之列表使用记录
  • 网络原理5 - TCP4
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(三十一) -> 同步云端代码至DevEco Studio工程
  • 【Java学习笔记】StringBuilder类(重点)
  • 基于 Transformer robert的情感分类任务实践总结之二——R-Drop
  • Python实例题:Python计算线性代数
  • SQL 基础入门
  • Vue学习之---nextTick
  • 抖去推--短视频矩阵系统源码开发
  • vue3 + vite实现动态路由,并进行vuex持久化设计
  • Vue ④-组件通信 || 进阶语法
  • 基于SFC的windows系统损坏修复程序
  • 个人电脑部署本地大模型+UI
  • SQL Server全局搜索:在整个数据库中查找特定值的高效方法
  • 11.RV1126-ROCKX项目 API和人脸检测画框
  • SCAU数值计算OJ
  • ​​Java 异常处理​​ 的详细说明及示例,涵盖 try-catch-finally、自定义异常、throws 与 throw 的核心概念和使用场景
  • 深入Java8-日期时间API:TemporalAdjusters、TemporalAdjuster类
  • C++中的右值引用与移动语义的理解
  • 思维链的 内部机制和简单理解
  • 【Unity Shader编程】之让画面动起来
  • Qwen2.5-VL - 模型结构