在vue中如何才能实现前进刷新后退不刷新效果

这篇文章主要介绍了vue实现前进刷新,后退不刷新效果,即加载过的界面能缓存起来(返回不用重新加载),关闭的界面能被销毁掉(再进入时重新加载)。本文给大家分享实现思路,需要的朋友可以参考下

最近在用vue尝试着做移动端的项目。希望实现前进刷新、后退不刷新的效果。即加载过的界面能缓存起来(返回不用重新加载),关闭的界面能被销毁掉(再进入时重新加载)。例如对a->b->c 前进(b,c)刷新,c->b->a 后退(b,a)不刷新。

由于 keep-alive 会把所有加载的过的界面都缓存起来,没法实现返回时将界面销毁掉,导致再进入时没有重新加载这个界面。于是首先想到的方案是在点击界面上返回按钮的时候,调用 this.$destroy(true) 来将界面销毁掉。但是在移动端 android设备上会有物理返回键,如果通过物理返回键返回的话,就没法处理了。虽然可以重写android的返回事件,来调用js的方法,但是调用的是js的全局方法,没法具体让在最上层的那个界面销毁掉。

于是就需要另辟蹊径了。还好这篇文章给了我启发 vue-router 之 keep-alive ,多谢作者的分享。

要是能够知道路由是前进还是后退就好了,这样的话我就能在后退的时候让 from 路由的 keepAlive 置为 false , to 路由的 keepAlive 置为 ture ,就能在再次前进时,重新加载之前这个 keepAlive 被置为 false 的路由了。

立即学习“前端免费学习笔记(深入)”;

废话不多说了,这里模拟有三个界面 login 到 server 到 main 。

首先我给这三个界面路由的 path 设置了严格的层级关系 ,并设置keepAlive都是true,默认都是需要缓存。

  1. const router = new Router({ routes: [  {   path: '/',   redirect: '/login'  },  {   path: '/login',   component: Login,   meta: {    keepAlive: true   }  },  {   path: '/login/server',   component: ServerList,   meta: {    keepAlive: true   }  },  {   path: '/login/server/main',   component: Main,   meta: {    keepAlive: true   }  } ]})

登录后复制

由于这三个界面path的层级不同,我就能通过 beforeEach 这个钩子判断出什么时候是后退了。在后退时将 from 路由的 keepAlive 置为 false , to 路由的 keepAlive 置为 ture 。

  1. router.beforeEach((to, from, next) => { const toDepth = to.path.split('/').length const fromDepth = from.path.split('/').length if (toDepth 

    最后需要缓存的界面用 keep-alive 包起来,就能实现时前进刷新,后退时不刷新的效果了。

                                     
  2. 登录后复制

  3. 上面是我整理给大家的,希望今后会对大家有帮助。

  4. 相关文章:

  5. 详细讲解有关实现react服务器渲染问题

  6. 详细讲解有关实现react服务器渲染问题

  7. 详细讲解有关实现react服务器渲染问题

  8. 以上就是在vue中如何才能实现前进刷新后退不刷新效果的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    编程技术

    在Vue2.5中通过Table 和 Pagination 组件如何实现分页功能

    2025-3-31 22:41:47

    编程技术

    详细讲解有关实现react服务器渲染问题

    2025-3-31 22:41:51

    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索