Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Vue.js中对相同路径、不同查询参数使用router.push_Javascript_Vue.js_Router - Fatal编程技术网

Javascript 如何在Vue.js中对相同路径、不同查询参数使用router.push

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

当前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').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错误。我需要就组件问题提出另一个问题。非常感谢。