keepAlive缓存数据后恢复data的初始数据

keep-alive的生命周期

初次进入时:created > mounted > activated;退出后触发 deactivated
再次进入:会触发 activated;事件挂载的方法等,只执行一次的放在 mounted 中;
组件每次进去执行的方法放在 activated 中

实现keepAlive

<div id="app" class='wrapper'>
    <keep-alive>
        <!-- 需要缓存的视图组件 --> 
        <router-view v-if="$route.meta.keepAlive"></router-view>
     </keep-alive>
      <!-- 不需要缓存的视图组件 -->
     <router-view v-if="!$route.meta.keepAlive"></router-view>
</div>

路由中设置keepAlive

{
  path: 'list',
  name: '路由名字', 
  component (resolve) {
    require(['地址'], resolve)
 },
 meta: {
  keepAlive: true,
  title: 'xxx'
 }
}

场景:从A页面进入B页面 B页面中修改data的值 如果进入c页面 则使用keepAlive进行页面缓存 如果返回A页面 则进行data恢复初始数据

实现

beforeRouteEnter(to, from, next) {
    next(vm => {
      vm.$nextTick(() => {
        if (from.path !== 'C页面路由名字') {
        //this.$data是表示当前的改变后的this中的数据
        //而this.$options.data()是表示没有赋值前的this中的数据,表示初始化的data.
          Object.assign(vm.$data, vm.$options.data()) 
          vm.initData() //进入页面后的初始化的方法
        }
      })
    })
  },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值