Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create a 404 component in vuejs using vue-router

I'm new to vuejs and I'm working on my first project with vue. I'm just wondering how I will route to my 404.vue component when the requested url is not found.

Any Idea?

like image 530
Kamga Simo Junior Avatar asked Aug 10 '17 16:08

Kamga Simo Junior


People also ask

How do I create a dynamic route Vue?

Adding dynamic routes in VueUpdate the router/index. js file with the new route in the routes array. Remember to include the import for the Post component. Restart your app and head to localhost:8080/post/dynamic-routing in your browser.

How do I redirect route Vue?

You can use $router. push({ name: "yourroutename"}) or just router. push("yourroutename") now to redirect.

What is hash mode in Vue router?

The default mode for vue-router is hash mode - it uses the URL hash to simulate a full URL so that the page won't be reloaded when the URL changes. To get rid of the hash, we can use the router's history mode, which leverages the history.


1 Answers

In the routes declaration, I like to add this:

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

Which will imply that if the user is navigated to a path which does not match any routes, it will be redirected to the "404" route, which will contain the "not found" message.

The reason I've separated it into 2 routes is so that you can also programmatically direct the user to the 404 route in such a case when some data you need does not resolve.

For instance, if you were creating a blog, you might have this route:

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

Which will resolve, even if the provided slug does not actually retrieve any blog post. To handle this, when your application determines that a post was not found, do

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

or

return router.push('/404') 

if you are not in the context of a Vue component.

One thing to bear in mind though is that the correct way to handle a not found response isn't just to serve an error page - you should try to serve an actual HTTP 404 response to the browser. You won't need to do this if the user is already inside a single-page-application, but if the browser hits that example blog post as its initial request, the server should really return a 404 code.

like image 187
g-wilson Avatar answered Sep 28 '22 13:09

g-wilson