vue 页面缓存和不缓存方法

利用 <keep-alive></keep-alive> 标签页面缓存

  1. 在App.vue 中来判断各个组件是否缓存
<div id="app">
    <!--缓存想要缓存的页面,实现后退不刷新-->
    <!--加上v-if的判断,可以自定义想要缓存的组件,自定义在router里面-->
    <keep-alive>
      <router-view v-if="$route.meta.keepAlive"></router-view>
    </keep-alive>
    <router-view v-if="!$route.meta.keepAlive"></router-view>

    <!--这里是其他的代码-->
  </div>
  1. 在配置路由 router.js 中来控制某个组件是否需要缓存
export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld,
      meta:{keepAlive: true} // 这个组件需要缓存 true
    },{
      path:'/eleme',
      component:Eleme,
      meta:{keepAlive: false} // 这个组件不需要缓存false(不写默认不缓存)
    }
  ]
})

设置为缓存之后不会触发组件销毁周期

3 .路由前进刷新、后退不刷新 keep-alive
可以使用导航钩子beforeRouteEnter、beforeRouteLeave等等和location.reload();

beforeRouteEnter(to, from, next) {    //beforeRouteEnter在mounted之前执行,进入页面的时候就会执行
	console.log(to)
	console.log(from);
	if (from.path == '/c') {
		to.meta.keepAlive = false; // B 跳转到 A 时,让 A 缓存,即不刷新(代码写在B页面)
		next(function () {
			location.reload();     //next()和keep-alive组合,可以实现第二次进入页面的时候重新调用接口,而不是缓存
		});
	} else {
		to.meta.keepAlive = true;
		next();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值