query和params是vue router中两个传参的方式,整体上很像,在一些细节上有一定的区别,需要注意一下
先行提示:
两者的获取参数的方式都是采用this.$route
具体为this.$route.query,this.$route.params
1.引入参数借助name还是path?
query参数可以使用name也可以使用path,都可以正常传参
params只能用name,用path的话传不过去,用$route接收不到
2.参数显示在url上?
query传参,参数暴露在url上,拼接在路径后面
/index?a=1&b=2
params传参
- 如果在路由上配置了某参数且传了该参数,url上就会显示
- 如果没配置,传多少都不会显示
- 如果配置了,但是没传也不会显示,而且还会报错
3.刷新参数是否会丢失
params传参,刷新会丢失,但如果在路由配置了,可以在url显示的参数,刷新不会丢失
query传参,刷新不会丢失,注意用query就不要路由配置参数了,会报错
4.参数必须提前配置?
query是不需要提前配置的,该问题主要针对params
params配不配置看需求
- 无论配不配,跳转后都能用
this.$route.params
获取到参数- 配不配带来的影响就是参数是否会显示在url中
这几个区别是我在代码中试出来的,如果有缺失还请补充,如果有问题还请指正