vue vue-router 完美实现前进刷新,后退不刷新。附scrollBehavior源码解析

本文详细介绍了如何利用Vue Router的scrollBehavior函数结合keep-alive,实现在Vue项目中前进刷新页面,后退不刷新的效果。通过分析scrollBehavior的源码,理解其工作原理,包括保存和恢复滚动位置,以及在popstate和pushstate事件中的关键操作,以此达成所需功能。
摘要由CSDN通过智能技术生成

需求:在一个vue的项目中,我们需要从一个列表页面点击列表中的某一个详情页面,从详情页面返回不刷新列表,而从列表的上一个页面重新进入列表页面则需要刷新列表。

而浏览器的机制则是每一次的页面打开都会重新执行所有的程序,所以这个功能并不能直接实现。而vue-router给我们提供了一个叫scrollBehavior的回调函数,我门可以用这个方法结合keep-alive能很好的实现这个功能,下面第一步附上实现代码:

首先我们创建a,b,c,d四个页面,在路由的meta属性中添加需要缓存的页面标识(isKeepAlive):

import Vue from 'vue' import Router from 'vue-router' const HelloWorld = () => import('@/components/HelloWorld')
const A = () => import('@/components/router-return/router-a')
const B = () => import('@/components/router-return/router-b')
const C = () => import('@/components/router-return/router-c')
const D = () => import('@/components/router-return/router-d')

Vue.use(Router)

const routes = [
  {
    path: '/',
    name: 'HelloWorld',
    component: HelloWorld
  }, {
    path: '/a', //前端全栈学习交流圈:866109386
    name: 'A',//面向1-3年前端开发人员
    component: A//帮助突破技术瓶颈,提升思维能力
  }, {
    path: '/b',
    name: 'B',
    component: B,
    meta: {
      isKeepAlive: true }
  }, {
    path: '/c',
    name: 'C',
    component: C
  }, {
    path: '/d',
    name: 'D',
    component: D
  }
]

然后我们修改app.vue页

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值