传参方式:query、params
区别:
query | params |
---|---|
可以与name或者path搭配使用 | 只能与name搭配使用 |
不需要在路由中声明 | 必须在路由中声明(如果不在路由中声明,也是可以传递到下一个路由中的。如果未声明,则在路径中不回显示参数值,但页面刷新会丢失参数。) |
在路径中会显示参数名+参数值 | 在路径中只会显示参数值 |
参数值为对象
query、params参数值都可以直接传递一个对象,对象在路径上会显示 %5Bobject%20Object%5D,可以接收参数,参数就是该对象,但页面刷新参数值会变成 [object Object]
props
在路由中可以定义 props,取代与 $route的耦合,这样路由对应的vue文件即可以作为一个页面使用,也可以单独作为组件使用,提高代码的复用性。
详细用法参见官方API:https://router.vuejs.org/zh/guide/essentials/passing-props.html
使用建议
在参数固定且必传的情况下,建议使用params方式,这样可以在路由层次控制参数传递,还可以防止用户自己修改访问地址导致页面报错(params声明后如果不传参数会成为无匹配路径)。
大批量的参数传递建议使用vuex,而不是在路由中传递(浏览器的地址长度限制)