程序员玛丽的星海方舟

Vue router中params和query的区别

在vue开发中,页面跳转时常需要传递一些参数。如果我们使用vue router来进行路由,通常有两种方式进行参数的传递,一种是使用params, 一种是使用query. 在下文中我将介绍一下个人使用中感受到的这两者的区别。

params

如果在url中定义了params的绑定,则可以直接在url中传递params('/articles/:id'), 否则只能通过vue router的方法(router-link或$router.push等)传递路径对象时添加params. params可以直接传递值和对象,并且定义了router中的props属性后,能在页面中通过props属性去获取。如果不通过props, 也可以使用this.$route.params获取。

query

query既可以直接在url后添加('marycly.github.io/index?pageId=114514'), 也可以通过vue router的方法传递路径对象时添加query. query可以传递值,但传递对象效果不稳定,最好将传递的对象通过JSON来保存。在页面中可以使用this.$route.query来获取query的内容。

在页面跳转中的实际应用表现

如果url中没有定义与params绑定的动态路由,个人不建议使用params来传递信息。因为这种情况下url里面并不包含params的信息,在浏览器历史前进/回退的过程中就会丢失,因此只能实现一个单向的传递。如果需要支持时常在页面之间跳转并保留信息的话,建议使用query.