标签:vue yourPage 列表 content meta 详情 scrollTop keepAlive
前提:vue的移动端分页,从列表进入详情后返回后直接回到了当前列表页顶部,而不是回到之前的位置,影响用户体验
解决方案:使用keepalive加上router
具体步骤:router中用meta设置变量scrollTop存储当前的滑动位置,默认为0,导航守卫中给其赋值,然后在需要的页面中用actived钩子重新给当前页面的scrollTop赋值为meta中记录的scrollTop
代码
router.js
{
path: 'yourPage',
name: 'yourPage',
component: () => import('@views/yourPage.vue'),
meta: {
title: '我的页面',
keepAlive: true,
scrollTop: 0
}
},
router.beforeEach((to,from,next) => {
// 记录缓存页之前的位置,从详情页返回后可以直接跳转回当前位置
if(from.meta.keepAlive) {
const $content = document.getElementById('app')
const scrollTop = $content?.scrollTop
from.meta.scrollTop = scrollTop || 0
}
next()
})
yourPage.vue
// 跳转到进入详情页之前的位置
activated() {
const $content = document.querySelector('#app')
$content.scrollTop = this.$route.meta.scrollTop
},
记得设置keepAlive,否则不起作用
keepAlive相关配置
APP.vue
<keep-alive>
<router-view v-if="$route.meta.keepAlive" />
</keep-alive>
<router-view v-if="!$route.meta.keepAlive" />
标签:vue,yourPage,列表,content,meta,详情,scrollTop,keepAlive 来源: https://blog.csdn.net/qq_39933787/article/details/122855974
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。