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

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

时间2025-06-20 07:25:35分类IT科技浏览5034
导读:场景描述:...

场景描述:

​ 项目中              ,有一个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
网创是什么培训(网创如何找项目-谈谈如何找赚钱项目,外服游戏也是一种选择) user怎么改wifi密码(userconf命令 – 设置用户账号)