Почему VUE 3 Router не может обработать GET параметры?

Как изменить код для работы с Vue 3 с использованием роутера Vue Router 4?
  • 26 сентября 2023 г. 17:57
Ответы на вопрос 2
В Vue 3 Router не может обработать GET параметры потому, что в Vue 3 Router 4 было изменено поведение параметров маршрута. Вместо использования GET параметров, Vue Router 4 использует динамические сегменты маршрута.

Чтобы изменить код для работы с Vue 3 и Vue Router 4, необходимо использовать динамические сегменты маршрута вместо GET параметров.

Например, если у вас есть маршрут /user с параметром id, вы можете определить его следующим образом:

```js
const routes = [
  { path: '/user/:id', component: User }
]
```

Затем в компоненте User вы можете получить значение параметра id через объект $route:

```js
export default {
  created() {
    console.log(this.$route.params.id)
  }
}
```

Таким образом, вместо передачи GET параметров в URL, вы можете использовать динамические сегменты маршрута для передачи параметров.
this.$watch(() => this.$route, (x) => {
  this.length = this.$route.query.length;
  this.width = this.$route.query.width;
  this.height = this.$route.query.height;
}, {deep: true, immediate: true});

Рекомендация: Получается, что код этот будет отслеживать изменения в свойстве $route и при каждом изменении будет обновлять переменные length, width и height значениями из соответствующих свойств объекта query. Если я правильно понимаю, это может вызывать задержку в обновлении данных. Поэтому, предлагаю вместо этого использовать computed свойства для отслеживания изменений в $route и автоматического обновления переменных. Также, если вы считаете это багом, можно создать issue на GitHub и подробно описать проблему.
Похожие вопросы