Learn how to navigate programmatically, access route parameters, and use named routes.
<!-- views/UserView.vue -->
<script setup>
import { useRoute } from 'vue-router'
import { ref, watch } from 'vue'
const route = useRoute()
const user = ref(null)
async function loadUser(id) {
user.value = await fetchUser(id)
}
// Watch for param changes (same component, different ID)
watch(() => route.params.id, loadUser, { immediate: true })
</script>
<template>
<div v-if="user">
<h1>{{ user.name }}</h1>
<p>ID: {{ route.params.id }}</p>
</div>
</template>
import { useRouter } from 'vue-router'
const router = useRouter()
// Push a new route
router.push('/about')
router.push({ path: '/user/42' })
router.push({ name: 'user', params: { id: 42 } })
router.push({ name: 'search', query: { q: 'vue' } })
// Replace (no history entry)
router.replace('/login')
// Go back / forward
router.back()
router.go(-2)
const routes = [
{
path: '/user/:id',
name: 'user',
component: UserView,
}
]
<RouterLink :to="{ name: 'user', params: { id: 42 } }">
View User
</RouterLink>