时间:2021-05-18
在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>当点关闭标签的时候如果不想当前页面缓存 加上
接着遇到了第一次缓存第二次改为false后打开不缓存了 在关闭标签页面 加上这个
补充知识:解决通过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官网
三、解决方式:在界面B离开时,销毁组件。代码如下:
// 导航离开该组件的对应路由时调用[可以访问组件实例 `this`]beforeRouteLeave (to, from, next) { // 销毁组件,避免通过vue-router再次进入时,仍是上次的history缓存的状态 this.$destroy(true) next()}更多beforeRouteLeave 详见官网
四、其它解决方式(未成功):
vue-router官网提供了 router.replace(location, onComplete?, onAbort?) 的方式,使得不向 history中新增记录,但是我未尝试成功,具体原因暂不知。
官网描述:
我的写法:
this.$router.replace({name:'组件B名称', params: {参数}}, () => { this.warning('test!') }, () => { this.warning('test!') })
以上这篇解决vue-router 切换tab标签关闭时缓存问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
vue-router该如何使用忽然碰到一个常见的问题,明明可以使用v-if/v-show可以的解决的问题,有没有必要是使用vue-router来解决。比如常见的
在vue中,实现Tab切换主要有三种方式:使用动态组件,使用vue-router路由,使用第三方插件。因为这次完成的功能只是简单切换组件,再则觉得使用路由切换需
问题:使用vue-router在IE下a标签里的路由不跳转,火狐,chrome工作正常。解决:在App.vue里增加判断IE浏览器手动修复……exportdef
业务需求:切换tab页标签的时候(路由前进的时候),缓存当前组件数据,关闭tab页标签的时候清除组件缓存。实现:1、先在store的state里面设置一个要缓存
keep-alive是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。结合vue-router中使用,可以缓存某个view的整个内容