javascript - vue-router:如何不使用 `saveScrollPosition`

标签 javascript vue-router

在我的例子中,我使用了 vuevue-router。我遇到了一个问题,即 saveScrollPostion 属性可能不能正常工作。

这是我的代码:

router.js

export default router => {
"use strict"
router.map({
    //'/': {
    //    component: null
    //},
    '/blogs': {
        component: require('./views/ArticleListPage.vue'),
        subRoutes: {
            '/': {
                component: require('./components/ArticleList/ArticleListSection.vue'),
            },
            '/tag/:name': {
                component: require('./components/ArticleList/ArticleListSection.vue'),
                name: 'tag'
            },
            '/classification/:name': {
                component: require('./components/ArticleList/ArticleListSection.vue'),
                name: 'classification'
            }
        }
    },
    '/projects': {
        component: require('./views/ProjectPage.vue')
    },
    '/about': {
        component: require('./views/AboutPage.vue')
    },
    '/p/:id': {
        component: require('./views/ArticlePage.vue')
    },
    '*': {
        component: require('./views/NotFound.vue')
    }
});

router.beforeEach(()=>{

});

index.js中,Router实例中有两个设置:

const router = new Router({
    history: true,
    saveScrollPosition: false
});

问题是:如果转到任何/p/:id 路由并向下滚动页面,您会发现返回后上一页也滚动了.

我已阅读 vue-router文档,它说 saveScrollPostion

might not work as expected if your has transition effects.

删除设置,或者只是将saveScrollPosition改为false,问题依旧。

我猜是我写的router.map方法导致了错误的结果。

我也想知道是不是我的项目代码有什么bug而不是vue-router的设置导致了这个问题。

此外,我还没有在路由转换之间编写任何transition设置。

感谢大家回答我的问题。

最佳答案

尝试观察 Vue 的 $route 属性,例如:

watch: {
    $route: function() {
        window.scrollTo(0,0);
    }
}

关于javascript - vue-router:如何不使用 `saveScrollPosition`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36772355/

相关文章:

javascript - 为什么此 HTTP 请求返回数组长度而不是内容?

javascript - 如何在 JavaScript 中重写自定义 Array.reduce() 中的 Array.every() ?

apache - Vue 使用 Apache 部署 : routes don't work in history mode

vue.js - 延迟加载组件不适用于 Vue Router

javascript - 获取属性访问权限被拒绝 "document"

javascript - jQuery 创建了新数组

asp.net-core - 如何使用Endpoints在ASP.NET Core中通过VueJS处理路由?

javascript - Vue - 通过路由器将 Prop 传递给组件

vue.js - 如何在 Nuxt 中设置 netlify 表单

javascript - 奇怪的动态表错误