#vue.js #parameters #nuxt.js #vue-router
Вопрос:
Я использую nuxt, и у меня следующая проблема. Мой старый код выглядит так:
this.$router.push({path: "about/me"})
Теперь мне нужно сделать тот же звонок с некоторыми параметрами:
this.$router.push({path: "about/me", params: {sendNotification: "1"}})
Это , очевидно, не работает, так как vue-маршрутизатор позволяет использовать только params
с name
и без path
, поэтому он должен выглядеть так:
this.$router.push({name: ..., params: {sendNotification: "1"}})
Я мог бы сделать это query
вместо params
, но я не хочу, чтобы мой URL выглядел уродливо.
Проблема с nuxt заключается в том, или, по крайней мере, так я понимаю nuxt, что он генерирует имена маршрутов, используя структуру папок, а в моем случае также языковой стандарт. Таким образом, название этого маршрута на самом деле: «личное-обо-мне__ru».
Итак, мой вопрос: Есть ли способ получить route.name
динамически, чтобы я мог написать что-то вроде:
this.$router.push({name: getRouteNameByPath("about/me"), params: {sendNotification: "true"}})
Ответ №1:
Имя пути маршрута соответствует name
реквизиту, который вы можете указать .vue
файлу. Итак, запись является name: 'AboutMe'
ключевым свойством и используйте его в маршрутизаторе { name: 'about-me' }
.
Кроме того, в vue devtools есть вкладка «Маршрутизатор» с названием всех доступных маршрутов.
Ответ №2:
Это, очевидно, не работает, так как vue-маршрутизатор позволяет использовать параметры только с именем, а не путем.
Зачем вам нужно проходить парамы вдоль пути? Предполагается, что вы добавляете параметры в сам путь, поэтому vue-маршрутизатор не разрешает отдельный объект параметров.
Поэтому , например, предполагая, что ваш динамический маршрут таков about/me/:sendNotification
, вы можете либо предоставить параметры с названным маршрутом:
this.$router.push({name: ..., params: {sendNotification: "1"}});
что указывает вам на about/me/1
это .
ИЛИ вы можете протолкнуть весь путь, включая параметры
this.$router.push({ path: 'about/me/1' });
И то, и другое даст один и тот же результат.