vue跳转,前进后退,点击浏览器的返回按钮,地址栏路由变了但是页面没跳转

Vue项目使用
this.$router.push({
path: ‘/home’
});进行跳转
从页面A—>B,B—>C,C—>B(OK),B—>A(失败)已解决

一、跳转设置:

1、在APP.vue中:页面切换的位置,对不同的页面进行不同的渲染。
不需要让页面重新加载时用keep-alive来对页面进行缓存,防止重复渲染DOM
不使用keep-alive:
beforeRouteEnter > beforeCreate > created> mounted > activated > … … > beforeRouteLeave > deactivated
使用keep-alive:
beforeRouteEnter >activated > … … > beforeRouteLeave > deactivated

<template>
  <div id="app">
    <keep-alive><router-view v-if="$route.meta.keepAlive"/></keep-alive>
    <router-view v-if="!$route.meta.keepAlive" />
  </div>
</template>

2、在路由中设置keepAlive属性判断是否需要缓存,在需要缓存的路由中加入keepAlive:true.
router.js

const routes = [
  {
    path: "/home",
    name: "Home",
    component: () => import("@/views/Home"),
    meta: {
      keepAlive: true,
    }
    },
    {
    path: "/menufour",
    name: "menuFour",
    component: () => import("@/views/Home/menuFour"),
    meta: {
      keepAlive: true,
    }
  },
  {
    path: "/iframe",
    name: "Iframe",
    component: () => import("@/views/Home/iframe"),
  }]
  const router = new VueRouter({
  routes
});
router.beforeEach((to, from, next) => {
  next();
  });
  export default router;

3、在Home/index.vue页面中加入跳转。

 this.$router.push({
            path: "/menufour",
          });
 this.$router.push({
                path: "/iframe",
          });

二、解决办法

1、排查错误原因
在router.js中beforeEach打印from 和 to,发现路由正常跳转,没有问题,且没忽略next()。
2、考虑A页面是否有报错导致返回时加载不出来,意外发现在从A—>B页面时设置的一些条件状态满足从A—>B的,也就导致在从B—>A时,发生了B—>A—>B,不知道为什么B—>A—>B只打印了B—>A的路由,当把A页面中的状态调整之后,B—>A就能正常返回了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值