使用到Vue的项目,我们最常见使用的就是Vue配套的Vue Router库。
那么在平日开发中,有多少种跳转路由的方法?
使用router-link标签,我们通常会使用到2个参数,最常用的就是to参数
to参数,表示你想要跳转到的路由对象
router-link标签,会调用router.push()方法,该方法会在你点击浏览器会退按钮的时候,无痕回退一个路由。
可以是路由路径
<router-link to="/home">Home</router-link>
<router-link :to="'/home'">Home</router-link>
也可以是路由对象,甚至还可以为其携带参数
<router-link :to="{ path: '/home' }">Home</router-link>
<router-link :to="{ name: 'user', params: { userId: '123' }}">User</router-link>
<router-link :to="{ path: '/register', query: { plan: 'private' }}">
Register
</router-link>
设置 replace 属性的话,当点击时,会调用 router.replace(),而不是 router.push(),所以导航后不会留下历史记录。
<router-link to="/abc" replace></router-link>
方法1和2是使用html的方法来调用,对应的,也有使用js代码来控制路由的方法
router.push('/users/eduardo')
router.push({ path: '/users/eduardo' })
router.push({ name: 'user', params: { username: 'eduardo' } })
router.push({ path: '/register', query: { plan: 'private' } })
router.push({ path: '/about', hash: '#team' })
在上述代码中, 发现给路由传递参数,有params和query两个不同的方式,他们的区别又是什么 ?
query是什么
从 URL 的 search 部分提取的已解码查询参数的字典。就是地址中?后面的内容,不过是已经解析的。
params是什么
从 path 中提取的已解码参数字典。就是vue路由中的路径参数
如下方代码中的**id **字段,就是路径参数,当使用params的时候,就可以获取到。
const routes = [
{ path: '/users/:id', component: User },
]