Vue中使用keepAlive缓存页面

1.app.vue文件

<template>
    <div>
    	<!--需要缓存-->
        <keep-alive>
            <router-view v-if="$route.meta.keepAlive"></router-view>
        </keep-alive>
        <!--不需要缓存-->
        <router-view v-if="!$route.meta.keepAlive"></router-view>
    </div>
</template>

2.router.js文件

{
  path:'/loanmessage',
  component:loanmessage,
  name:'loanmessage',
  meta: {
    keepAlive: true,  //代表需要缓存
    isBack: false,
  },

3.在需要缓存的页面加入如下代码

beforeRouteEnter(to, from, next) {
  if (from.name == 'creditInformation' || from.name == 'cityList') {
    to.meta.isBack = true;
  }
  next();
},
activated() {
  this.getData()
  this.$route.meta.isBack = false
  this.isFirstEnter = false
 
},

注意事项

1.钩子函数执行顺序

  • 不使用keep-alive

beforeRouteEnter --> created --> mounted --> destroyed

  • 使用keep-alive

beforeRouteEnter --> created --> mounted --> activated --> deactivated
再次进入缓存的页面,只会触发beforeRouteEnter -->activated --> deactivated 。created和mounted不会再执行。

2. 为什么beforeRouteEnter钩子不执行
因为文档中说在这里插入图片描述

路由组件指的是在定义router时component属性所指定的文件,普通组件、子组件等不属于路由组件,所以在他们里面调用这些路由钩子不生效

文章仅学习用,参考并转载自:
https://www.cnblogs.com/baifangzi/p/14481820.html
https://www.cnblogs.com/helloyong123/archive/2020/08/03/13427275.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值