How to Use Vue Router's Push Function
Jul 23, 2021
With Vue Router, you can use its
router.push()
function to programmatically navigate between routes on your site.
You can either call push()
with a string path, or with an object containing either the path
or name
of the route.
const router = new VueRouter({
routes: [
{
path: '/home',
component: { template: '<h1>Home</h1>' }
},
{
path: '/about',
component: { template: '<h1>About Us</h1>' }
},
{
path: '/user/:id',
name: 'user',
component: { template: '<h1> Your id is {{$route.params.id}} </h1>' }
}
]
});
const app = new Vue({
router,
methods: {
changeRoute(route) {
// `route` is either a string or object
router.push(route);
}
},
template: `
<div id="rendered-content">
<div>
<button @click="changeRoute('home')">Home</button>
<button @click="changeRoute('about')">About Us</button>
<button @click="changeRoute({path: '/user/123'})">Get ID</button>
</div>
<div>
<router-view></router-view>
</div>
</div>
`
}).$mount('#example');
Passing Parameters
To pass parameters using router.push()
, you can do one of the following:
router.push({ name: 'user', params: {id: 123}});
// or
const id = 123;
router.push({ path: `/user/${id}` });
To then access it, use whatever you declared in the router as the object property name.
If the route was /user/:id
the path would be $route.params.id
or you could access
it as a prop by adding a props:true
object in the route.
{
path: '/user/:id',
component: { template: '<h1>Your id is {{$route.params.id}}</h1>' },
props:true
},
Here's a live demo.
Vue School has some of our favorite Vue
video courses. Their Vue.js Master Class walks you through building a real
world application, and does a great job of teaching you how to integrate Vue
with Firebase.
Check it out!
Did you find this tutorial useful? Say thanks by starring our repo on GitHub!