Почему $ router.push ({name: 'summoner', params: {summonerName: summonerName}}) приводит к URL / summoner / username / вместо / summoner / username? - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь выполнить функцию, которая перенаправляет пользователя на другую страницу, когда он щелкает по определенному элементу, однако,

this.$router.push({ name: 'matchlist', params: { summonerName: summonerName }})

приводит к URL /summoner/username/ вместо /summoner/username. Если вы не заметили, в конце первого URL-адреса есть обратный знак, который вызывает проблему, которой не существует, если я нахожусь на /summoner/username

Если я использую это:

this.$router.push({ path: `/summoner/${summonerName}` })

Меня отправляют на /summoner/username, и все работает нормально, НО мне все еще любопытно, почему я получаю эту обратную черту в первом примере.

Маршруты:

{
    path: '/summoner/:summonerName',
    component: Summoner,
    children: [
        { path: '', component: Matchlist, name: 'matchlist' },
        { path: 'match/:matchId', component: SpecificMatch, name: 'specificMatch' }
    ]
}

Функция:

    redirectToProfile(participant){
        let summonerName = participant.identity.player.summonerName
        this.$router.push({ name: 'matchlist', params: { summonerName }})
        //this.$router.push({ path: `/summoner/${summonerName}` })
    },

1 Ответ

0 голосов
/ 02 октября 2019

Здесь обсуждается проблема на github https://github.com/vuejs/vue-router/issues/1753

И решение состоит в том, чтобы добавить pathToRegexpOptions: { strict: true } к вашим маршрутам.

Скрипка Джоша Дельтенера, которая показывает пример:http://jsfiddle.net/L7hscd8h/9377/

...