首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nuxt-link导航到不同页面上的锚点/散列不起作用

使用nuxt-link导航到不同页面上的锚点/散列不起作用
EN

Stack Overflow用户
提问于 2021-11-03 08:34:37
回答 1查看 197关注 0票数 2

我想从一个页面导航到另一个页面的特定部分。因此,我在nuxt.config.js文件的路由器对象中添加了scrollBehavior函数,如下所示:

代码语言:javascript
复制
router: {
    scrollBehavior(to) {
      if (to.hash) {
        return {
          selector: to.hash,
          behavior: "smooth"
        };
      }
    }
  }

我的“pages”目录树如下所示:

代码语言:javascript
复制
pages/
   index.vue
   parent.vue
   random.vue

在'layouts‘目录的default.vue中,我编写了导航栏:

代码语言:javascript
复制
<button @click="$router.push({ name: 'parent' })">Parent One</button>
<button @click="$router.push({ name: 'parent', hash: '#sec2' })">Parent Two</button>

在parent.vue内部,我有两个部分:

代码语言:javascript
复制
<div class="sec-1" id="sec1">
      <h1>Parent One</h1>
      <p>...
      </p>
</div>
<div class="sec-2" id="sec2">
      <h1>Parent Two</h1>
      <p>...
      </p>
</div>

现在,问题是当我点击random.vue文件中的'parent two‘按钮时,它不起作用。但是当我在parent.vue文件中点击按钮时,它会滚动到第二部分。但是我想从random.vue页面导航到第二部分。如果我在vue项目中编写确切的代码,那么它工作得很好,但在nuxt项目中不起作用。但我需要在我的Nuxt项目中这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-03 09:40:07

查看我的答案here,您可以在~/app/router.scrollBehavior.js文件中设置以下内容

代码语言:javascript
复制
export default function(to, from, savedPosition) {
  console.log("this is the hash", to.hash)
  return new Promise((resolve, reject) => {
    if (to.hash) {
      setTimeout(() => {
        resolve({
          selector: to.hash,
          behavior: "smooth"
        })
      }, 10)
    }
  })
}

它应该工作得很好。当它找不到选择器或仅在特定路径上应用选择器时,可能只是静默地失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69821787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档