解决vue页面之间滚动互相影响

问题:比如在A页面滑动到底部,并点击按钮跳转到B页面,B页面如果也是长页面就会滚动到与A页面相同的位置

期望:进入B页面时,滚动位置为0

思路:在route->index.js页面,在路由配置页给B页面加上meta:{scrollToTop:true},在scrollBehavior方法中判断meta.scrollToTop为true的路由,x:0,y:0即可

route->index.js
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter);

const routes = [
  {
    path: '/b',
    component: () => import('@/views/B.vue'),
    meta: {
      title: 'B',
      scrollToTop: true
    },
    name: 'B',
  },
]
const router = new VueRouter({
  mode: 'history', // 访问路径不带#号
  routes,
  scrollBehavior (to, from, savedPosition) {
    const position = {}
    if (to.matched.some(m => m.meta.scrollToTop)) {
      position.x = 0
      position.y = 0
    }
    return position
  },
  base: '/' // 默认配置
})
export default router

 

posted @ 2021-08-04 17:31  chicidol  阅读(881)  评论(0编辑  收藏  举报