Vue-router: возможно ли передавать параметры при программном перенаправлении через путь?

#vue.js #vue-router

#vue.js #vue-router

Вопрос:

По сути, я хочу перенаправить на динамический URL-адрес, что-то вроде: /resource/:id , но я также хочу одновременно передать некоторые параметры. Я не хочу идти по маршруту строки запроса.

Итак, что-то вроде:

 this.$router.push({path: 'resource/'   id, params: {
      test: "HELLO"
   }
});

  

Свойство передается, когда у меня оно такое (но это неправильный маршрут)

 this.$router.push({name: 'resource', params: {
      test: "HELLO"
   }
});

  

Возможно ли делать то, что я хочу, или мне нужно начать поиск в VueEx?

Комментарии:

1. Какой ваш желаемый URL? domain.com/resource/100?test='HELLO' ? Где 100 находится id

2. Мне не нужна строка запроса. Мне нужен только /resource /100, и тест будет пройден за кулисами.

Ответ №1:

Вы можете сделать это следующим образом:

ваш маршрутизатор:

 {
    path: '/resource/:id',
    name: 'route-name',
    component: Component,
    props: true,
},
  

и в вашем компоненте вы можете получить все параметры в качестве реквизита:

 props: ['id', 'name', '...'],
  

если вы хотите вызвать маршрут в router-link, вы можете сделать это следующим образом:

 <router-link tag="a" :to="{name: 'route-name', params: {id: 1, name: 'John', ...}}">
  

Я надеюсь, что это поможет вам.

Комментарии:

1. Я хочу сделать это программно, а не по ссылке (кнопка, на которую нажимает пользователь, должна выполнить вызов ajax перед перенаправлением).

2. Я думаю, что это невозможно. но у вас могут быть некоторые глобальные вычисляемые переменные. задайте их в своем Ajax-вызове, а затем вызовите их в своем целевом компоненте. Если вам нужна помощь в этом, дайте мне знать

Ответ №2:

Я пошел по маршруту VueX и настроил хранилище. Не похоже, что возможно сделать то, о чем я думал изначально.