vue-router如何在返回时返回到上次滚动位置?

  1. 跳转前的页面是router-link渲染出来的,试了scrollBehavior的savedPosition没有用

  2. 然后尝试beforeRouteEnter实现,但是由于组件是异步加载的跳转长度不够无法跳转

所以还有没有别的方法?

阅读 7.4k
2 个回答

我是这么做的 keep-alive

然后路由的两个钩子 跳转前记录位置信息到sessionStoroary 页面渲染结束后调出这个位置 记住是在mount后调用 document.socoll什么的 忘了怎么拼了 你理解就好

如果你的页面是单页应用,Vuet可以实现你的需求

import Vue from 'vue'
import Vuet from 'vuet'
Vue.use(Vuet)

const vuet = new Vuet({
  modules: {
    testModule: {
      data () {
        return {}
      }
    }
  }
})


new Vue({
  // ...
  vuet,
  template: `
    <div v-vuet-scroll.self="{ path: 'testModule',  name: '随便给一个名字' }"></div>
  `
})

如果你需要记录多个滚动条,调用多次v-vuet-scroll这个指令,设置不同的名字即可

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题