解决vue-router 切换tab标签关闭时缓存问题


Posted in Javascript onJuly 22, 2020

在router入口页面加上 keepAlive: true // 需要被缓存 false则不需要

{
  path: 'fundProListG',
  component: resolve => require(['@/pages/product/fundPros/fundTab/fundTab.vue'], resolve),
  title: '基金首页',
  redirect: 'fundProListG/fundProListG',
  meta: {
  keepAlive: false // 不需要被缓存
  },
  children: [{
  path: 'fundProListG',
  component: resolve => require(['@/pages/product/fundPros/fundProListG.vue'], resolve),
  meta: {
  keepAlive: true // 需要被缓存
  }
  },{
  path: 'fungAdm',
  component: resolve => require(['@/pages/product/fundPros/fungAdm.vue'], resolve),
  meta: {
  keepAlive: true // 需要被缓存
  }
  }]
 },

App.vue (你在哪写的那个<router-view ></router-view>标签就在哪改动)

<keep-alive>
 <router-view v-if="$route.meta.keepAlive"></router-view>
 </keep-alive>
 <router-view v-if="!$route.meta.keepAlive"></router-view>

当点关闭标签的时候如果不想当前页面缓存 加上

解决vue-router 切换tab标签关闭时缓存问题

接着遇到了第一次缓存第二次改为false后打开不缓存了 在关闭标签页面 加上这个

解决vue-router 切换tab标签关闭时缓存问题

补充知识:解决通过vue-router打开tab页,下次进入还是上次history缓存的界面状态的问题

一、问题描述:

1. 跳转模式:界面A-->界面B(界面A中通过 this.$router.push({name:'组件B名称', params: {参数}}) 通过打开新tab页的方式打开界面B。)

2.关闭界面B,回到界面A

3.再次从A到B时,打开的界面B仍然是上次的状态,哪怕传递的参数不一样。

另:router声明如下

{
 path: 'demo/pageB',
 name: 'pageB',
 component: _import('demo/pageB'),
 meta: {
  requiresAuth: true,
  keepAlive: false, // 不需要被缓存
  title: '界面B'
 }
}

二、原因: 详见vue-router官网

解决vue-router 切换tab标签关闭时缓存问题

三、解决方式:在界面B离开时,销毁组件。代码如下:

// 导航离开该组件的对应路由时调用[可以访问组件实例 `this`]
beforeRouteLeave (to, from, next) {
 // 销毁组件,避免通过vue-router再次进入时,仍是上次的history缓存的状态
 this.$destroy(true)
 next()
}

更多beforeRouteLeave 详见官网

四、其它解决方式(未成功):

vue-router官网提供了 router.replace(location, onComplete?, onAbort?) 的方式,使得不向 history中新增记录,但是我未尝试成功,具体原因暂不知。

官网描述:

解决vue-router 切换tab标签关闭时缓存问题

我的写法:

this.$router.replace({name:'组件B名称', params: {参数}}, () => { this.warning('test!') }, () => { this.warning('test!') })

以上这篇解决vue-router 切换tab标签关闭时缓存问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 处理null及null值示例
Jun 09 Javascript
jquery结婚电子请柬特效源码分享
Aug 21 Javascript
深入理解ECMAScript的几个关键语句
Jun 01 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
Sep 17 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
Apr 14 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
Oct 17 Javascript
Vue中的Vux配置指南
Dec 08 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
May 16 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
Nov 14 Javascript
node 文件上传接口的转发的实现
Sep 23 Javascript
React Native 混合开发多入口加载方式详解
Sep 23 Javascript
JS回调函数深入理解
Oct 16 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
Jul 22 #Javascript
浅谈JS for循环中使用break和continue的区别
Jul 21 #Javascript
解决vue 给window添加和移除resize事件遇到的坑
Jul 21 #Javascript
js实现带积分弹球小游戏
Jul 21 #Javascript
在vue中created、mounted等方法使用小结
Jul 21 #Javascript
解决vue的touchStart事件及click事件冲突问题
Jul 21 #Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
Jul 21 #Javascript
You might like
修改apache配置文件去除thinkphp url中的index.php
2014/01/17 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
python 正则式 概述及常用字符
2009/05/07 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
浅谈对yield的初步理解
2017/05/29 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
python数据挖掘需要学的内容
2019/06/23 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
详解Python绘图Turtle库
2019/10/12 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
办公室文书岗位职责
2013/12/16 职场文书
排查整治工作方案
2014/06/09 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python
使用Ajax实现进度条的绘制
2022/04/07 Javascript
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL