首页IT科技vuex 路由跳转(vue路由跳转取消上个页面的请求)

vuex 路由跳转(vue路由跳转取消上个页面的请求)

时间2025-05-03 18:52:36分类IT科技浏览4288
导读:场景描述:...

场景描述:

​ 项目中             ,有一个Steps 步骤条                   ,包含三步审核      ,

当页面跳转时             ,不管当前处于第几步                   ,都需要停止上个页面正在执行或还未执行的逻辑             。

需求:当vue路由跳转时      ,取消执行上个页面之后的逻辑                   。

这个需求可以分为两个功能点

vue路由跳转时       ,停止上个页面正在请求的接口 除了停止接口                   ,还要停止接口请求之后的逻辑(主要是涉及到页面跳转的)

一 vue路由跳转时             ,停止上个页面正在请求的接口

当页面发生跳转时       ,就没必要请求前一个页面的请求了      。若是网络差的情况下                   ,前一个页面接口访问失败的话             ,还会跳出一些报错信息,对于用户来说                   ,这其实是非常不友好的             。

因此                   ,当页面发生跳转时,停止请求上一个页面的接口                   。参考文章:https://www.cnblogs.com/zlfProgrammer/p/11058413.html

1. 利用vuex存储axios.CancelToken             ,用来记录需要取消的ajax请求      。

​ axios.CancelToken可以用来取消ajax请求                   ,所以将需要取消的请求放到vuex      ,当路由发生跳转时             ,直接取消       。

可复制的代码

import axios from "axios"; // 引入axios import store from "../store"; // 设置路由跳转取消上个页面的请求 axios.interceptors.request.use( (config) => { // 在发送请求之前做些什么 config.cancelToken = new axios.CancelToken(function(cancel) { store.commit("pushToken", cancel); }); return config; }, function(error) { // 处理请求错误 return Promise.reject(error); } );

2. 在main.js内进行路由拦截                   ,路由跳转取消上个页面的请求                   。

import router from "./router"; import store from "./store"; // 路由拦截---路由跳转取消上个页面的请求 router.beforeEach(function(to, from, next) { store.commit("clearToken"); // 取消请求 next(); });

二 在相关的接口中增加一层判断      ,若是路由不是当前页面的路由       ,停止后面的逻辑

​ 这种情况主要避免                   ,当路由跳转时             ,此时前一个页面所有接口已经返回       ,但是后面有些显示逻辑                   ,比如:接口成功之后跳到一个新的页面             。这个时候提前判断一下             ,当前路由是否发生了变化,若是发生了变化                   ,则不继续后面的操作       。(在请求每一个接口前)

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
vueurl生成二维码(vue中生成条形码(jsbarcode)、二维码(qrcodejs2)) go语言编程入门与实战技巧(go语言入门-一文带你掌握go语言函数)