Vue.js 如何处理Vue路由器中的碎片获取参数?

Vue.js 如何处理Vue路由器中的碎片获取参数?,vue.js,oauth-2.0,gitlab,vue-router,Vue.js,Oauth 2.0,Gitlab,Vue Router,在尝试使用Web应用程序流的后端实现之后,我正在Vue前端中尝试隐式授权 API发送给我的访问代码是片段url参数格式。这意味着它使用哈希符号#foo=bar&moo=var,而不是与默认Vue路由器配置冲突的标准?foo=bar&moo=var 在Vue路由器中尝试后(该路由器在其URL中使用#),我可以使用$route.hash访问参数。我目前的问题是,我必须自己用以下方法拆分和修剪参数: const params = this.$route.hash.split('&').map(

在尝试使用Web应用程序流的后端实现之后,我正在Vue前端中尝试隐式授权

API发送给我的访问代码是片段url参数格式。这意味着它使用哈希符号
#foo=bar&moo=var
,而不是与默认Vue路由器配置冲突的标准
?foo=bar&moo=var

在Vue路由器中尝试后(该路由器在其URL中使用
#
),我可以使用
$route.hash
访问参数。我目前的问题是,我必须自己用以下方法拆分和修剪参数:

const params = this.$route.hash.split('&').map(part => part.replace(/#/, ''));
const parsedParams = {};
params.forEach(param => {
  const parts = param.split('=');
  parsedParams[parts[0]] = parts[1];
});
它输出
{foo:“bar”,moo:“var”}


在VueRouter中是否有更好或更标准的方法来处理片段参数?如果没有,在Vue之外是否有一个标准解决方案?

在我看来,我的代码片段是一个足够好的解决方案,尽管我希望Vue中对OAuth标准提供一些支持。也许我的期望太高了

这就是我最后使用的

const parsedParams = {};
this.$route.hash.split('&')
  .map(part => part.replace(/^#/, ''))
  .forEach(param => {
    const parts = param.split('=');
    parsedParams[parts[0]] = parts[1];
  });
您还可以使用uri直接从此循环中解码参数

    parsedParams[parts[0]] = decodeURIComponent(parts[1]);

@samayo
$route.query
仅适用于以
开头的参数?
谢谢,尽管我不确定对
vue路由器使用哈希模式时会产生什么影响。第三个括号中的结束括号缺少
。map(part=>part.replace(/#/,“”))
map
调用从任何名称或值的任何位置删除哈希值。要仅删除字符串开头的哈希,请使用:
this.$route.hash.replace(/^#/,“”)
您还需要这样做:
parsedParams[parts[0]=decodeURIComponent(parts[1])