Vue Router 编程式导航

目录
Vue Router 编程式导航的三种方法和参数传递
router.push(location, onComplete?, onAbort?)
跳转到指定的 URL,并向 history 栈添加一个新的记录。当用户点击浏览器后退按钮时,则回到之前的 URL。
|
|
用作参数的 params 和 query 的区别:
-
path不能和params一起使用,如果提供了path,params会被忽略。取而代之的是使用name指定路由或手写完整的带有参数的path(官方文档示例):1 2 3 4 5const userId = '123' router.push({ name: 'user', params: { userId }}) // -> /user/123 router.push({ path: `/user/${userId}` }) // -> /user/123 // 这里的 params 不生效 router.push({ path: '/user', params: { userId }}) // -> /userquery不属于上述情况,name和path都通用。 -
query最明显的特征是参数会显示在 url 中,刷新后参数仍存在;而params参数不显示,且刷新后会丢失。可理解为query相当于发送一次 GET 请求,params相当于发送一次 POST 请求。 -
params接受参数的方式是this.$route.params.userId,query接受参数的方式则是this.$route.query.userId。这里 router 是 VueRouter 的一个对象,route 是一个跳转的路由对象。
router.replace(location, onComplete?, onAbort?)
跳转到指定 URL,但不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。
具体使用方法与上述 router.push(location, onComplete?, onAbort?) 一致。
router.go(n)
方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n)。
|
|
注意:n 的取值需要在可用 history 记录的数目范围内。