Я пытаюсь сделать разделяемый 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 router doc, если есть опция / config, чтобы избежать этого.
К вашему сведению, когда я получаю доступ к одному и тому же URI с тем же параметром, используя router-link
, эта проблема исчезла.
Есть ли способ избежать экранирования этого символа в конфигурации vue router (возможно, нехорошо проинформирован в документе) или с ванильным JS?
Если нет, я думаю, что это проблема Vue Router.
РЕДАКТИРОВАТЬ
Есть гдеЯ создаю маршрут
{
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,
},
}),
},