],
},
{ path: '/about', component: About },
- { path: '/users/:id', props: true, name: 'user', component: UserDetails },
+ {
+ path: '/users/:id',
+ props: true,
+ name: 'user',
+ component: UserDetails,
+ },
],
})
next()
})
+// avoid navigating to non existent users
+router.beforeEach(to => {
+ if (to.name !== 'user') return
+
+ const { id } = to.params
+ return (
+ typeof id === 'string' && !Number.isNaN(Number(id)) && !!users[Number(id)]
+ )
+})
+
const app = createApp({
setup() {
const route = useRoute()
app.use(router)
window.vm = app.mount('#app')
+// @ts-ignore
+window.router = router