vue利用keep-alive进行数据的缓存

该博客介绍了如何在Vue中利用keep-alive组件实现页面缓存,以保持列表商城页面在切换后数据和滚动高度不变。通过在router.js中配置meta属性来控制页面缓存,并在组件的activated和beforeRouteLeave钩子函数中处理滚动位置的保存和恢复。
摘要由CSDN通过智能技术生成

问题描述:

类似列表商城页面来回切换,数据缓存和页面高度保持不变
路由脚本文件中配置当前页面是否使用keep-alive实现缓存:

问题解决:

// router.js
{
	 path: 'home/home',
	 name: 'Home',
	 component: Home,
	 meta: {
	   isKeepAlive: true, // 配置当前页面是否开启keep-alive
	   keepAliveFrom: ['Talentpaint'] // 跳转下一个页面进行数据缓存
	 }
},

// home.vue (对应要使用keep-alive的页面的组件)
// activated 是当组件再keep-alive中来回切换时,将会对应执行
 activated() {
    const scrollTop = this.$route.meta.scrollTop
    const $wrapper = document.querySelector('.m-main')
    if (scrollTop && $wrapper) {
      $wrapper.scrollTop = scrollTop // 获取上一步from存入的值,进行页面滚动高度的设置
    }
  },
  // 离开页面检测当前也买你是否开启keep-alive,再做高度记录
  beforeRouteLeave(to, from, next) {
    if (from.meta.isKeepAlive) {
      const $wrapper = document.querySelector('.m-main') // 列表的外层容器 注意找到滚动的盒子
      const scrollTop = $wrapper ? $wrapper.scrollTop : 0 // 找到滚动过后的值,跳转时from进行存储参数
      from.meta.scrollTop = scrollTop
    }
    next()
  },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值