浏览器后退按钮在路由器查询参数更改时无法正常工作
Browser back button not working properly on router query param change
我有一个简单的路由定义:
{
path: 'customers',
name: 'customers',
component: Customers,
props: true
}
首先,我在一般的 /customers 路线上。
但是我可以在这条路线上使用查询参数,并对变化做出反应以加载相应的数据:
this.$router.push({ name: 'customers', query: { customerId: '123' } });
@Watch('$route.query.customerId')
customerIdChanged() {
this.loadCustomer($route.query.customerId);
}
这按预期工作,但假设我将三个不同的 customerId 推送到此路由器,现在想返回浏览器历史记录并一一加载以前的客户。我不能,因为查询更改不被视为“真正的”url 更改。因此,当我向后推时,我会被路由回初始的 /customers 路由。
如何使这些查询更改算作真正的 url 更改,以便我可以使用后退按钮?
我可以维护自己的浏览器历史堆栈,但我宁愿不这样做,而且认为有更“官方”的解决方案?
谢谢!
----更新----
实际上我的代码有错误。在我推送到路线之前,我用 /customer 替换了路线。然后推送客户查询路由。这就是后退导航不起作用的原因。
dynamic matching呢?您可以使用:
{
path: 'customers/:id',
name: 'customers',
component: Customers,
props: true
}
this.$router.push({ name: 'customers', params: { id: '123' } });
我有一个简单的路由定义:
{
path: 'customers',
name: 'customers',
component: Customers,
props: true
}
首先,我在一般的 /customers 路线上。 但是我可以在这条路线上使用查询参数,并对变化做出反应以加载相应的数据:
this.$router.push({ name: 'customers', query: { customerId: '123' } });
@Watch('$route.query.customerId')
customerIdChanged() {
this.loadCustomer($route.query.customerId);
}
这按预期工作,但假设我将三个不同的 customerId 推送到此路由器,现在想返回浏览器历史记录并一一加载以前的客户。我不能,因为查询更改不被视为“真正的”url 更改。因此,当我向后推时,我会被路由回初始的 /customers 路由。
如何使这些查询更改算作真正的 url 更改,以便我可以使用后退按钮? 我可以维护自己的浏览器历史堆栈,但我宁愿不这样做,而且认为有更“官方”的解决方案?
谢谢!
----更新----
实际上我的代码有错误。在我推送到路线之前,我用 /customer 替换了路线。然后推送客户查询路由。这就是后退导航不起作用的原因。
dynamic matching呢?您可以使用:
{
path: 'customers/:id',
name: 'customers',
component: Customers,
props: true
}
this.$router.push({ name: 'customers', params: { id: '123' } });