我正在尝试为我的应用创建可共享的 URI,我正在使用 vue router 3。
问题是当我使用类似的路线访问我的应用程序时
localhost:8000/foo?param1=yeaa¶m2=yeaa2
此 URI 被 vue 路由器捕获但转换为
localhost:8000/logs?param1=yeaa&%3Bparam2=yeaa2
然后当我尝试使用访问查询参数时
router.query.param1 // it works
router.query.param2 // it fail and return undefined
事实上,当我在 Vue devtools 里面查看时,可以看到 vue router 认为第二个参数是amp;param2
$route
path:"/logs"
query:Object
amp;param2:"yeaa2"
param1:"yeaa"
params:Object (empty)
fullPath:"/logs?param1=yeaa&%3Bparam2=yeaa2"
meta:Object (empty)
这有点无聊,如果有选项/配置可以避免这种情况,我没有成功在 vue 路由器文档上找到。
仅供参考,当我使用相同的参数访问相同的 URI 时,router-link
这个问题就消失了。
有没有办法避免这种字符转义,在 vue 路由器配置中(可能在文档中没有充分了解)或使用 vanilla JS?
如果不是,我认为这是一个 vue 路由器问题。
编辑
我在那里创建路线
{
component: Log,
path: '/logs',
props: route => ({
oldQueryOptions: {
absoluteTimeRangeFrom: route.query.absoluteTimeRangeFrom,
absoluteTimeRangeTo: route.query.absoluteTimeRangeTo,
query: route.query.query,
rangeKeyword: route.query.rangeKeyword,
relativeTimeRange: route.query.relativeTimeRange,
type: route.query.type,
},
}),
},