Javascript 如何在Vue.js中对相同路径、不同查询参数使用router.push
当前url为Javascript 如何在Vue.js中对相同路径、不同查询参数使用router.push,javascript,vue.js,router,Javascript,Vue.js,Router,当前url为 /?type=1 我想使用router.push打开此页面 this.$router.push('/?type=2'); 但这会导致NavigationDuplicated错误 我不想像这样使用参数 /:type 请看这个。他们使用的是this.$router.replace,但我认为这与您使用this.$router.push时的根本原因相同。建议的解决方案/解决方法是使用链接到$router调用的空catch,因此: this.$router.push('/?type=2
/?type=1
我想使用router.push打开此页面
this.$router.push('/?type=2');
但这会导致NavigationDuplicated错误
我不想像这样使用参数
/:type
请看这个。他们使用的是this.$router.replace
,但我认为这与您使用this.$router.push时的根本原因相同。建议的解决方案/解决方法是使用链接到$router
调用的空catch
,因此:
this.$router.push('/?type=2').catch(err=>{})
编辑
您还可以将查询参数作为对象传递给this.$router.push的第二个参数:
this.$router.push({query:{type:2}})
请看这个。他们使用的是this.$router.replace
,但我认为这与您使用this.$router.push时的根本原因相同。建议的解决方案/解决方法是使用链接到$router
调用的空catch
,因此:
this.$router.push('/?type=2').catch(err=>{})
编辑
您还可以将查询参数作为对象传递给this.$router.push的第二个参数:
this.$router.push({query:{type:2}})
这是因为它与您当前的路径没有什么不同。
如果type
的值不同,则不会出现NavigationDuplicated
错误。
您也可以像下面这样分开查询,以确保框架能够理解它:
this.$router.push({
路径:“/”,
查询:{type:2},
});
这是因为它与您当前的路径没有什么不同。
如果type
的值不同,则不会出现NavigationDuplicated
错误。
您也可以像下面这样分开查询,以确保框架能够理解它:
this.$router.push({
路径:“/”,
查询:{type:2},
});
Aliraza已经回答了您的问题,但我正在分享这个答案,因为我看到您的评论在问,“组件不重新加载”,对于重新加载组件,您需要观察如下参数:
watch: {
'$route.params': 'functionToRunWhenParamsChange',
}
Aliraza已经回答了您的问题,但我正在分享这个答案,因为我看到您的评论询问,组件不重新渲染,对于重新渲染组件,您需要像这样观察参数:
watch: {
'$route.params': 'functionToRunWhenParamsChange',
}
这不会重新呈现组件。好的,不管怎样,我发现了如何控制NavigationDuplicated错误。我需要就组件问题提出另一个问题。非常感谢。正如@JeongyongLee所指出的,这实际上不起作用。尽管查询已更改,但路由器不会推送到同一路径。这并不能解决问题。而是将您导航到路由器的根目录,并且不会停留在同一路径中,而是使用新参数。这不会重新呈现组件。好的,无论如何,我找到了如何控制NavigationDuplicated错误的方法。我需要就组件问题提出另一个问题。非常感谢。正如@JeongyongLee所指出的,这实际上不起作用。尽管查询已更改,但路由器不会推送到同一路径。这并不能解决问题。而是将您导航到路由器的根目录,并且不会停留在同一路径中,而是使用新参数。这不会重新呈现组件。好的,无论如何,我找到了如何控制NavigationDuplicated错误的方法。我需要就组件问题提出另一个问题。非常感谢。这不会重新呈现组件。好的,不管怎样,我发现了如何控制NavigationDuplicated错误。我需要就组件问题提出另一个问题。非常感谢。