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

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

时间2025-08-05 09:03:59分类IT科技浏览5549
导读:场景描述:...

场景描述:

​ 项目中                ,有一个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
文章采集网站源码(体验极致效率,文章采集工具A带给你前所未有的采集体验)