从 Url 中删除查询字符串参数

新手上路,请多包涵

来自 AngularJS,我认为这在 Vue.js 2 中也很容易。但在 Vue 中这似乎很难设计。

在 AngularJS 中,我可以这样做 $location.search('my_param', null); 这将有效地将 https://mydomain.io/#/?my_param=872136 变成 https://mydomain.io/#/

在 Vue 中,我尝试 this.$router.replace('my_param',null); ,但它只会做 https://mydomain.io/#/?my_param=872136 -> https://mydomain.io/#/my_param ,留下空的 my 参数

Vuejs2 中是否没有从 Url 中删除查询参数的方法?我应该求助于纯 JS 来实现这一目标吗?

原文由 Marcus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 849
2 个回答

router.replace() 是通过从浏览器历史堆栈中删除当前 URL 并将其替换为您传递给它的参数路由来进行导航。

实际语法是 router.replace(url_location, onComplete, onAbort)

您正在做的是 router.replace(my_param, null) 从历史堆栈中删除当前 URL 并将其替换为 'my_param' 并且对于 null onComplete 回调 ---

所以这样做:

 this.$router.replace('/')

有关 程序化导航 的更多信息

原文由 Vamsi Krishna 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您有多个查询参数,删除其中一个参数的正确方法是:

 const query = Object.assign({}, this.$route.query);
delete query.my_param;
this.$router.replace({ query });

原文由 nbwoodward 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题