VUE----列表页跳转到列表详情页再返回到列表页, 页面不刷新保持原来的状态 && 跳转详情页路由缓存问题

VUE----列表页跳转到列表详情页再返回到列表页, 页面不刷新保持原来的状态&& 跳转详情页路由缓存问题

第一步,在App.vue文件下加入keep-alive

<div id="app">
    <!-- 可以被缓存的视图组件 -->
    <keep-alive>
      <router-view v-if="$route.meta.keepAlive"></router-view>
    </keep-alive>
    <!-- 不可以被缓存的视图组件 -->
      <router-view v-if="!$route.meta.keepAlive"></router-view>
  </div>

第二步 在路由文件中 :router/index.js,列表页面设置 meta 属性

  {
    path: '/Orderlist',
    name: 'Orderlist',
    component: () => import('@/views/Orderlist.vue'),
    meta: {
      keepAlive: true // 该路由会被缓存
    }
  },

第三步,在详情页里面设置 beforeRouteLeave,跟methods平级

beforeRouteLeave(to, from, next) {
    //设置下一个路由的meta,让列表页面缓存,即不刷新
    to.meta.keepAlive = true;
    next();
  },

第四步, 实现滚动行为的代码:router/index.js, scrollBehavior ()

const router = new VueRouter({
  mode:'hash',
  // mode:'history',
  routes,
  scrollBehavior (to, from, savedPosition) {
    if (savedPosition) {
      return savedPosition
    } else {
      return { x: 0, y: 0 } //期望滚动到哪个的位置
    }
   },
})

跳转详情页路由缓存问题

在rouer.js中设置meta

  {
    path: '/Orderdet',
    name: 'Orderdet',
    component: () => import('@/views/Orderdet.vue'),
    meta: {
      keepAlive: true // 该路由会被缓存
    },
  },

在详情页面中添加activated()

 activated() {
    this.id = this.$route.params.id || "";
    this.getInfos();
  },
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值