vue如何实现前进刷新后退不刷新

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

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

由于 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 

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

                                 

登录后复制

相关推荐:

2018最全的js刷新当前页面的代码示例

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

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

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

(0)
上一篇 2025年3月8日 18:21:46
下一篇 2025年2月26日 03:31:49

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

相关推荐

  • a链接刷新页面与js刷新页面用法介绍

    刷新页面通常是使用a链接与js刷新,至于两者在使用中的区别,在接下来的文章中有详细的介绍,希望能帮助到大家。 1.a链接的使用操作: 返回上一页   刷新当前页 登录后复制 #top的效果在我这没起作用,我直接写的刷新当前页倒是起作用了 2…

    编程技术 2025年3月8日
    200
  • Ajax怎么实现下拉框无刷新联动

    这次给大家带来Ajax怎么实现下拉框无刷新联动,Ajax实现下拉框无刷新联动的注意事项有哪些,下面就是实战案例,一起来看一下。 HTML代码: @{ Layout = null;}@using DAL;@using System.Data;…

    编程技术 2025年3月8日
    200
  • JS怎样刷新父页面

    这次给大家带来JS怎样刷新父页面,JS刷新父页面的注意事项有哪些,下面就是实战案例,一起来看一下。 用iframe、弹出子页面刷新父页面iframe parent.location.reload(); 登录后复制 弹出子页面 window.…

    编程技术 2025年3月8日
    200
  • 怎样实现微信web端后退强制刷新

    这次给大家带来怎样实现微信web端后退强制刷新,实现微信web端后退强制刷新的注意事项有哪些,下面就是实战案例,一起来看一下。 具体代码如下所示: //生成uuid var uuidChars = “0123456789ABCDEFGHIJ…

    编程技术 2025年3月8日
    200
  • vue实现前进刷新效果

    这次给大家带来vue实现前进刷新效果,vue实现前进刷新效果的注意事项有哪些,下面就是实战案例,一起来看一下。 最近在用vue尝试着做移动端的项目。希望实现前进刷新、后退不刷新的效果。即加载过的界面能缓存起来(返回不用重新加载),关闭的界面…

    编程技术 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
  • 用history让ajax支持前进/后退/刷新

    这次给大家带来用history让ajax支持前进/后退/刷新,用history让ajax支持前进/后退/刷新的注意事项有哪些,下面就是实战案例,一起来看一下。 前言: 现在前后端基本都是通过ajax实现前后端接口数据的交互,但是,ajax有…

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

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

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论