маршрутизатор vue.вставьте nuxt с помощью route.name

#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' });
 

И то, и другое даст один и тот же результат.