vue实现前进刷新效果

这次给大家带来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,默认都是需要缓存。

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 。

router.beforeEach((to, from, next) => { const toDepth = to.path.split('/').length const fromDepth = from.path.split('/').length if (toDepth < fromDepth) {  console.log('后退。。。')  from.meta.keepAlive = false  to.meta.keepAlive = true } next()})

登录后复制

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

                                 

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

jQuery代码优化方式的总结

360浏览器兼容模式的页面显示不全怎么处理

box-reflect实现倒影效果

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

以上就是vue实现前进刷新效果的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2779808.html

(0)
上一篇 2025年3月8日 15:51:55
下一篇 2025年3月8日 03:16:06

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS实现自动打字效果的代码

    本文主要和大家分享js实现自动打字效果,主要以代码的形式和大家分享,希望能帮助到大家。 nbsp;html>        自动打字 var str = '这是一段自动打字的代码,很有趣,哈哈哈哈哈哈,呵呵呵呵呵'…

    编程技术 2025年3月8日
    200
  • js实现带框的拖拽效果

    本文主要和大家分享js实现带框的拖拽效果,主要以代码的形式和大家分享,希望能帮助到大家。 nbsp;html>             Document   #box { width:100px; height:100px; back…

    编程技术 2025年3月8日
    200
  • JS实现逐字出现效果代码

    本文主要和大家分享JS实现逐字出现效果代码,最近看到一个简单实用的逐字出现动画效果,自己简单写了一个,小技巧,可以值得保存。 先上效果图: 源码: nbsp;html>逐字出来的效果,哈哈哈哈哈哈哈哈哈   var index = 0…

    2025年3月8日
    200
  • vue项目打包后刷新404怎么处理

    这次给大家带来vue项目打包后刷新404怎么处理,处理vue项目打包后刷新404的注意事项有哪些,下面就是实战案例,一起来看一下。 vue打包项目后刷新404的问题Nginx配置 server { listen 80; server_nam…

    编程技术 2025年3月8日
    200
  • js返回页面并刷新页面数据

    通常我们控制返回页面使用window.history.back() 或者 window.history.go(-1).但是这样的后退方式,不并不能满足刷新数据的需求. 解决方法window.location.href = document.…

    编程技术 2025年3月8日
    200
  • Ajax的实现异步刷新详解

    这次给大家带来Ajax的实现异步刷新详解,Ajax实现异步刷新的注意事项有哪些,下面就是实战案例,一起来看一下。 所谓的异步刷新,就是不刷新整个网页进行更新数据。 只有通过js才能实现Ajax,进而实行异步刷新 表单提交数据和Ajax提交数…

    2025年3月8日
    200
  • 简单实现JS 拖动效果

    本篇文章给大家分享的是关于简单实现JS 拖动效果的代码,是利用CSS3的Trnsform的移动属性来实现的,有需要的小伙伴可以看一下这篇文章的内容 利用CSS3的Trnsform的移动属性来实现的。 代码如下 nbsp;html>  …

    编程技术 2025年3月8日
    200
  • 如何实现AJAX的分页效果

    这次给大家带来如何实现AJAX的分页效果,实现AJAX分页效果的注意事项有哪些,下面就是实战案例,一起来看一下。 最近写一个给用户组添加角色的功能,要求一边是未添加的角色,一边是已添加的角色,还有搜索功能, 点击添加后,ajax保存操作. …

    2025年3月8日
    200
  • fileUpload上传文件带进度条效果的实现步奏

    这次给大家带来fileUpload上传文件带进度条效果的实现步奏,实现fileUpload上传文件带进度条效果的注意事项有哪些,下面就是实战案例,一起来看一下。 文件上传过程中,如果我们能看到进度条会更好,实现思路是服务器端用监听器实时监听…

    2025年3月8日
    200
  • 基于Ajax技术来实现无刷新用户登录(附代码)

    这次给大家带来基于Ajax技术来实现无刷新用户登录(附代码),基于Ajax技术来实现无刷新用户登录的注意事项有哪些,下面就是实战案例,一起来看一下。 代码如下: // JScript 文件function usersLogon(){ var…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论