Desplazarse a anclas con Vue Router

Dec 05 2020

Necesito una configuración de enlace de anclaje en vuejs para ir a:

<h1 id="apply">Test anchor</h1>

Lo siguiente funciona pero cambia la URL a http: // localhost: 8080 / # / apply

<a href="#apply" class="btn btn-primary mt-3">Apply Now</a>

Si luego actualizo la página, no sabe a dónde ir.

Lo siguiente tampoco me funciona. Ni siquiera se despliega para #aplicar.

<router-link to="/careers/job-1#apply">test</router-link>

¿Cómo configuro enlaces de anclaje con el enrutamiento de vuejs?

Respuestas

1 Dan Dec 05 2020 at 07:51

Agregue una propiedad pathy una hasha su toobjeto:

<router-link :to="{ path: '/careers/job-1', hash: '#apply' }">test</router-link>

Y agregue scrollBehaviora la definición de su enrutador:

const router = new VueRouter({
  ...
  scrollBehavior (to, from, savedPosition) {
    if (to.hash) {
      return {
        selector: to.hash,
        behavior: 'smooth'
      };
    }
    return { x: 0, y: 0 };  // Go to the top of the page if no hash
  },
  ...
})

Ahora debería desplazarse (suavemente, a menos que elimine esa behaviorpropiedad) hasta el ancla definida por el hash