Saltar al contenido

cómo crear un componente 404 en vuejs usando vue-router

Si te encuentras con alguna parte que no comprendes puedes dejarnos un comentario y te ayudaremos rápidamente.

Solución:

En la declaración de rutas, me gusta agregar esto:

[
  ...  
   path: '/404', component: NotFound ,  
   path: '*', redirect: '/404' ,  
  ...  
]

Lo que implicará que si el usuario navega a una ruta que no coincide con ninguna ruta, será redirigido a la ruta “404”, que contendrá el mensaje “no encontrado”.

La razón por la que lo he separado en 2 rutas es para que también pueda dirigir al usuario mediante programación a la ruta 404 en tal caso, cuando algunos datos que necesita no se resuelven.

Por ejemplo, si estuvieras creando un blog, podrías tener esta ruta:

 path: '/posts/:slug', component: BlogPost 

Lo cual se resolverá, incluso si el slug provisto no recupera ninguna publicación de blog. Para manejar esto, cuando su aplicación determine que no se encontró una publicación, haga

return this.$router.push('/404')

o

return router.push('/404')

si no está en el contexto de un componente Vue.

Sin embargo, una cosa a tener en cuenta es que la forma correcta de manejar una respuesta no encontrada no es solo mostrar una página de error: debe intentar enviar una respuesta HTTP 404 real al navegador. No necesitará hacer esto si el usuario ya está dentro de una aplicación de una sola página, pero si el navegador encuentra esa publicación de blog de ejemplo como su solicitud inicial, el servidor realmente debería devolver un código 404.

Hay un par de maneras de hacer esto.

La más genérica es verificar si la ruta coincide con alguna ruta antes de la navegación y, si no, redirigir a la ruta. Extraviado página.

router.beforeEach((to, from, next) => 
  if (!to.matched.length) 
    next('/notFound');
   else 
    next();
  
);

Ver JSFiddle.

Después de la respuesta de @g-wilson fui path: '*', component: NotFound . Puede ser útil si no desea realizar una redirección.

Aquí tienes las comentarios y calificaciones

Nos encantaría que puedieras dar visibilidad a esta noticia si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *