Nuxt.js 页面跳转后不会滚动至顶部,以及路由守卫应用

在做项目的过程中,遇到页面切换后不会滚动到顶部
解决方案:
在页面使用的layout中或者页面中,使用监听

watch: {
    '$route': function(to,from){
			 document.body.scrollTop = 0
      		 document.documentElement.scrollTop = 0
     		 this.$refs.scroll.scrollTop = 0   // 因为我的的滚动层不是body,所以将滚动层的scrollTop 至为0
    }
  },

还有在官方文档中看到的其他解决方案,大家可以试下

  1. nuxt.config.js:中配置
module.exports = {
  router: {
    scrollBehavior (to, from, savedPosition) {
      return { x: 0, y: 0 }
    }
  }
}
  1. 默认情况下,从当前页面切换至目标页面时,Nuxt.js 会让目标页面滚动至顶部。但是在嵌套子路由的场景下,Nuxt.js 会保持当前页面的滚动位置,除非在子路由的页面组件中将 scrollToTop 设置为 true。
<template>
  <h1>子页面组件</h1>
</template>

<script>
export default {
  scrollToTop: true
}
</script>
  1. 我们可以在nuxt.config.js:配置所有页面渲染后滚动至顶部:
module.exports = {
  router: {
    scrollBehavior (to, from, savedPosition) {
      return { x: 0, y: 0 }
    }
  }
}
  1. 使用路由守卫,在nuxt中配置路由守卫可以在plugins文件下新建router.js在里面写入
export default ({  app }) => {

app.router.afterEach((to, from, next) => {
   document.body.scrollTop = 0
   document.documentElement.scrollTop = 0
   // 或者滚动容器的scrollTop = 0
});
/*----------------------------下面是给页面加入百度统计代码的方法,有需要的可以参考下-----------------------------------------*/
  app.router.beforeEach((to, from, next) => {
    next();
    if (process.client) {
      let _hmt = _hmt || [];
      // 百度统计代码
      (function() {
        let hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?0cb92588b9c690b3c48173df77fa700d";
        let s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
      })();
    }
  })
}

然后在nuxt.config.js中配置
module.exports = {
 plugins: [
    {src: '@/plugins/router', ssr: false}
  ],
}

然后  重启项目

具体的可以看官方文档https://zh.nuxtjs.org/api/configuration-router https://zh.nuxtjs.org/api/pages-scrolltotop

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
nuxt.js是一个基于Vue.js的通用应用框架,它提供了一种简化和优化了前端开发体验的方式。在nuxt.js中,路由跳转可以通过以下几种方式实现: 1. 使用`<nuxt-link>`组件进行跳转: `<nuxt-link>`组件是nuxt.js提供的一个内置组件,可以用于生成符合项目路由规则的链接。你可以在模板中使用`<nuxt-link>`组件来跳转到其他页面。例如,如果你想跳转到名为`/about`的页面,你可以使用以下代码: ```html <nuxt-link to="/about">跳转到关于页面</nuxt-link> ``` 2. 使用`this.$router`对象进行编程式跳转: 在Vue组件中,你可以通过访问`this.$router`对象来进行编程式的路由跳转。你可以使用`push`方法来跳转到指定的路由路径。例如,如果你想在某个按钮的点击事件中跳转到名为`/contact`的页面,你可以使用以下代码: ```javascript this.$router.push('/contact') ``` 除了以上两种方式,你还可以使用其他的nuxt.js插件或扩展来实现更复杂的路由跳转逻辑。这些方式可以根据你的具体需求来选择和使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [mybatis之模糊查询方法](https://blog.csdn.net/u013013790/article/details/122052896)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Mybatis模糊查询的四种方式](https://blog.csdn.net/qq_44865665/article/details/120160025)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值