js-vue页面路由跳转(存入缓存)-多个复杂循环跳转返回

1,应用场景

        A页面跳转到对应的查看器B(可返回A),B可跳转到C(可返回B),C可跳转到B(可返回C),循环跳转正确返回对应页面。

2,解决方法

        利用sessionStorage缓存跳转前的路径。每一次进行跳转时进行缓存当前的路径。在进行需要返回时取出最新的路径,并从缓存中进行删除,进行对应的跳转返回。

        缺点(只适合跳转-》返回,不适合页面间既可以跳转又可以进行面包屑等页面切换,会导致存入的缓存路径不正确)。

3,代码演示A->B

  3.1,A页面跳转前存入当前路径
toMy{
 //跳转到对应的路径
 let path = '/home/ToHome'
 //存入当前路径(页面返回取出)
 let fromPath = '/home/ToMy'
 // 从sessionStorage中获取已有的路径数组数据,如果没有则创建一个空数组
 let pathArray = JSON.parse(sessionStorage.getItem('pathArray')) || [];
 // 将跳转前的路径添加到数组中
 pathArray.push(fromPath);
 // 将包含路径信息的数组转换为字符串并存入sessionStorage
 sessionStorage.setItem('pathArray', JSON.stringify(pathArray));
 this.$router.push({
      path,
      query: { ReportInfo: row,index:1},
   })
}
 3.2,B返回A取出缓存路径进行返回
back{
let stringPath= JSON.parse(sessionStorage.getItem('pathArray'));
if(stringPath&&stringPath.length>0){
      //取出对应路径进行跳转
      let path =stringPath.pop();
      this.$router.push({path});
      // 更新缓存最新跳转路径
      sessionStorage.setItem('pathArray', JSON.stringify(stringPath));                      
    };
}

4.路由守卫(Route Guards)

用于在导航过程中对路由进行控制和管理。通过路由守卫,您可以在路由导航前、路由导航后、以及路由更新时执行一些逻辑操作,比如权限验证、页面加载状态管理等。

Vue Router提供了三种类型的路由守卫:

  1. 全局前置守卫:通过router.beforeEach()注册全局前置守卫,在每次路由跳转之前都会执行该守卫。可以用于进行全局的权限验证、页面加载状态管理等操作。

  2. 全局解析守卫:通过router.beforeResolve()注册全局解析守卫,在导航被确认之前(在所有组件内守卫和异步组件被解析之后)执行。常用于确保异步组件完全加载后再进行导航。

  3. 全局后置钩子:通过router.afterEach()注册全局后置钩子,在每次路由跳转之后都会执行该钩子。常用于页面切换动画、页面滚动行为等操作。

  4. 全局前置守卫来进行权限验证
    import Vue from 'vue';
    import VueRouter from 'vue-router';
    
    Vue.use(VueRouter);
    
    const router = new VueRouter({
      routes: [
        // 路由配置
      ]
    });
    
    router.beforeEach((to, from, next) => {
      // 在每次路由跳转之前执行该守卫
      const isAuthenticated = checkUserAuthentication(); // 检查用户是否已认证
      if (to.meta.requiresAuth && !isAuthenticated) {
        // 如果需要认证且用户未认证,则重定向到登录页面
        next('/login');
      } else {
        next(); // 继续路由跳转
      }
    });
    
    export default router;

    使用router.beforeEach()注册了一个全局前置守卫,用于检查用户是否已认证。如果目标路由需要认证且用户未认证,则重定向到登录页面;否则继续路由跳转。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3中,可以通过使用keep-alive组件和导航钩子函数来实现路由跳转页面数据缓存。首先,在路由中设置需要缓存页面,并使用keep-alive组件将其包裹起来。可以使用v-if指令来判断哪些页面需要缓存,为true的是需要缓存的,false是不需要缓存的。这是第一步。 然后,在需要缓存页面设置导航钩子函数beforeRouteUpdate。这个钩子函数可以在每次路由更新之前执行,并在回调中执行需要数据更新的业务逻辑。例如,可以在这里重新发送分类数据接口请求,以更新页面数据。 综上所述,以上是实现Vue3路由跳转页面数据缓存的方法。通过使用keep-alive组件和导航钩子函数,可以在页面之间实现数据的缓存和更新。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue页面跳转实现页面缓存操作](https://download.csdn.net/download/weixin_38673924/13128304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue3-解决路由缓存问题-方案一:使用key;方案二:使用onBeforeRouteUpdate](https://blog.csdn.net/qq_45811054/article/details/130948701)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值