位置:- 正文

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

编辑:rootadmin
vue路由跳转取消上个页面的请求

推荐整理分享vue路由跳转取消上个页面的请求(vue关闭路由),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vuex 路由跳转,vue3 路由跳转,vue路由跳转关闭当前页面,vue路由跳转关闭当前页面,vue路由跳转的三种方法,vue3.0路由跳转,vue路由跳转关闭当前页面,vue路由跳转关闭当前页面,内容如对您有帮助,希望把文章链接给更多的朋友!

场景描述:

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

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

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

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

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

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

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

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

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

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

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

可复制的代码:

import axios from "axios"; // 引入axiosimport 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();});

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

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

本文链接地址:https://www.jiuchutong.com/zhishi/299683.html 转载请保留说明!
下一篇链接:https://www.jiuchutong.com/zhishi/299684.html
免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络